frysk.proc.live
Class LinuxPtraceTaskState.Stepping

java.lang.Object
  extended by frysk.proc.live.State
      extended by frysk.proc.live.LinuxPtraceTaskState
          extended by frysk.proc.live.LinuxPtraceTaskState.Running
              extended by frysk.proc.live.LinuxPtraceTaskState.Stepping
Enclosing class:
LinuxPtraceTaskState

private static final class LinuxPtraceTaskState.Stepping
extends LinuxPtraceTaskState.Running


Nested Class Summary
 
Nested classes/interfaces inherited from class frysk.proc.live.LinuxPtraceTaskState
LinuxPtraceTaskState.StartClonedTask
 
Field Summary
 
Fields inherited from class frysk.proc.live.LinuxPtraceTaskState
detaching, inSyscallRunning, running, stepping
 
Constructor Summary
LinuxPtraceTaskState.Stepping()
          Singleton indicating a stepping Running state (not inside a syscall).
 
Method Summary
private  void checkBreakpointStepping(LinuxPtraceTask task)
           
(package private)  LinuxPtraceTaskState handleSignaledEvent(LinuxPtraceTask task, Signal sig)
           
(package private)  LinuxPtraceTaskState handleStoppedEvent(LinuxPtraceTask task, Signal signal)
           
(package private)  LinuxPtraceTaskState handleTrappedEvent(LinuxPtraceTask task)
          Handles traps caused by breakpoints or instruction stepping.
 
Methods inherited from class frysk.proc.live.LinuxPtraceTaskState.Running
blockedContinue, checkWatchpoint, handleAddObservation, handleClonedEvent, handleContinue, handleDeleteObservation, handleDetach, handleExecedEvent, handleForkedEvent, handleSyscalledEvent, handleTerminatedEvent, handleTerminatingEvent, handleUnblock, sendContinue
 
Methods inherited from class frysk.proc.live.LinuxPtraceTaskState
clonedState, detachedState, handleAttach, handleRemoval, mainState
 
Methods inherited from class frysk.proc.live.State
toString, unhandled, unhandled
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

LinuxPtraceTaskState.Stepping

LinuxPtraceTaskState.Stepping()
Singleton indicating a stepping Running state (not inside a syscall).

Method Detail

handleTrappedEvent

LinuxPtraceTaskState handleTrappedEvent(LinuxPtraceTask task)
Handles traps caused by breakpoints or instruction stepping. If there are any Code observers at the address of the trap they get notified. If none of the Code observers blocks we continue over the breakpoint (breakpoint stepping state), otherwise we block till all blocking observers are happy (breakpoint stopped state). If there are no Code observers installed at the address, but we are stepping then all instruction observers are notified. Otherwise it is a real trap event and we pass it on to the task itself.

Overrides:
handleTrappedEvent in class LinuxPtraceTaskState.Running

checkBreakpointStepping

private void checkBreakpointStepping(LinuxPtraceTask task)

handleSignaledEvent

LinuxPtraceTaskState handleSignaledEvent(LinuxPtraceTask task,
                                         Signal sig)
Overrides:
handleSignaledEvent in class LinuxPtraceTaskState.Running

handleStoppedEvent

LinuxPtraceTaskState handleStoppedEvent(LinuxPtraceTask task,
                                        Signal signal)
Overrides:
handleStoppedEvent in class LinuxPtraceTaskState.Running