Property | Type | Description | |
---|---|---|---|
current_backtrace | Backtrace | ||
current_frame | |||
current_method | Method | ||
registers | Registers |
Method | Description | |
---|---|---|
CallMethod ( TargetAddress method, TargetAddress method_arg, |
||
CallMethod ( TargetAddress method, long arg1, long arg2 ) : CommandResult | ||
CallMethod ( TargetAddress method, long arg1, long arg2, long arg3, string string_argument ) : CommandResult | ||
Detach ( ) : void | ||
DisassembleInstruction ( Method method, TargetAddress address ) : AssemblerLine | ||
DisassembleMethod ( Method method ) : AssemblerMethod | ||
GetBacktrace ( Backtrace mode, int max_frames ) : Backtrace | ||
GetInstructionSize ( TargetAddress address ) : int | ||
GetMemoryMaps ( ) : TargetMemoryArea[] | ||
GetRegisters ( ) : Registers | ||
Kill ( ) : void | ||
Lookup ( TargetAddress address ) : Method | ||
ManagedCallback ( ManagedCallbackFunction func, CommandResult result ) : bool | ||
PrintObject ( Style style, |
||
PrintType ( Style style, |
||
ProcessEvent ( |
||
ProcessEvent ( int status ) : void |
This is called from the SingleSteppingEngine's main event loop to give us the next event - `status' has no meaning to us, it's just meant to be passed to inferior.ProcessEvent() to get the actual event. Actually, `status' is the waitpid() status code. In Linux 2.6.x, you can call waitpid() from any thread in the debugger, but we need to get the target's registers to find out whether it's a breakpoint etc. That's done in inferior.ProcessEvent() - which must always be called from the engine's thread. |
|
ReadAddress ( TargetAddress address ) : TargetAddress | ||
ReadBuffer ( TargetAddress address, int size ) : byte[] | ||
ReadByte ( TargetAddress address ) : byte | ||
ReadInteger ( TargetAddress address ) : int | ||
ReadLongInteger ( TargetAddress address ) : long | ||
ReadMemory ( TargetAddress address, int size ) : TargetBlob | ||
ReadString ( TargetAddress address ) : string | ||
Return ( ReturnMode mode ) : CommandResult | ||
RuntimeInvoke ( |
||
SetKilledFlag ( ) : void | ||
SetRegisters ( Registers registers ) : void | ||
SimpleLookup ( TargetAddress address, bool exact_match ) : Symbol | ||
SingleSteppingEngine ( ThreadManager manager, |
||
SingleSteppingEngine ( ThreadManager manager, |
||
StartApplication ( CommandResult result ) : CommandResult | ||
StartExecedChild ( CommandResult result ) : CommandResult | ||
StartForkedChild ( CommandResult result ) : CommandResult | ||
StartSuspended ( ) : void | ||
StartThread ( CommandResult result ) : CommandResult | ||
Step ( ThreadingModel model, StepMode mode, StepFrame frame ) : CommandResult | ||
Stop ( ) : void | ||
ToString ( ) : string | ||
WriteAddress ( TargetAddress address, TargetAddress value ) : void | ||
WriteBuffer ( TargetAddress address, byte buffer ) : void | ||
WriteByte ( TargetAddress address, byte value ) : void | ||
WriteInteger ( TargetAddress address, int value ) : void | ||
WriteLongInteger ( TargetAddress address, long value ) : void |
Method | Description | |
---|---|---|
CheckTrampoline ( |
||
DoAbortInvocation ( long rti_id ) : void | ||
DoDetach ( ) : void | ||
DoDispose ( ) : void | ||
DoProcessEvent ( |
||
ExecuteOperation ( System.Operation operation ) : void | ||
MethodHasSource ( Method method ) : bool | ||
OperationCompleted ( TargetEventArgs args ) : void | ||
OperationCompleted ( TargetEventArgs args, bool suspended ) : void | ||
OperationInterrupted ( ) : void | ||
ProcessOperationEvent ( |
||
PushOperation ( System.Operation operation ) : void | ||
PushOperationNoExec ( System.Operation operation ) : void | ||
SingleSteppingEngine ( ThreadManager manager, |
||
StartOperation ( ) : void |
Start a new stepping operation. All stepping operations are done asynchronously. The inferior basically just knows two kinds of stepping operations: there is do_continue() to continue execution (until a breakpoint is hit or the target receives a signal or exits) and there is do_step_native() to single-step one machine instruction. There's also a version of do_continue() which takes an address - it inserts a temporary breakpoint on that address and calls do_continue(). Let's call these "atomic operations" while a "stepping operation" is something like stepping until the next source line. We normally need to do several atomic operations for each stepping operation. We start a new stepping operation here, but what we actually do is starting an atomic operation on the target. Note that we just start it, but don't wait until is completed. Once the target is running, we go back to the main event loop and wait for it (or another thread) to stop (or to get another command from the user).
|
|
check_inferior ( ) : void | ||
disable_extended_notification ( NotificationType type ) : void | ||
do_continue ( ) : void |
Resume the target.
|
|
do_continue ( TargetAddress until ) : void | ||
do_next ( ) : void |
Step over the next machine instruction.
|
|
do_step ( ) : void | ||
do_step_native ( ) : void | ||
enable_extended_notification ( NotificationType type ) : void | ||
enforce_managed_context ( ) : void | ||
frames_invalid ( ) : void | ||
insert_lmf_breakpoint ( TargetAddress lmf_address ) : void | ||
insert_temporary_breakpoint ( TargetAddress address ) : void | ||
remove_lmf_breakpoint ( ) : void | ||
remove_temporary_breakpoint ( ) : void | ||
request_managed_callback ( |
||
restore_stack ( StackData stack ) : void | ||
set_registers ( Registers registers ) : void | ||
update_current_frame ( |
Method | Description | |
---|---|---|
AbortInvocation ( long rti_id ) : void | ||
AbortRuntimeInvoke ( long rti_id ) : OperationRuntimeInvoke | ||
AcquireThreadLock ( ) : void |
Interrupt any currently running stepping operation, but don't send any notifications to the caller. The currently running operation is automatically resumed when ReleaseThreadLock() is called.
|
|
ActivatePendingBreakpoints ( |
||
CreateStepFrame ( ) : StepFrame |
Create a step frame to step until the next source line.
|
|
CreateStepFrame ( StepMode mode ) : StepFrame |
Create a step frame for a native stepping operation.
|
|
DetachThread ( ) : void | ||
DoTargetAccess ( TargetAccessHandler func ) : object | ||
GetCallbackFrame ( TargetAddress stack_pointer, bool exact_match ) : |
||
GetRuntimeInvokedFunction ( long ID ) : |
||
InitializeBreakpoints ( ) : bool | ||
InsertBreakpoint ( BreakpointHandle handle, TargetAddress address, int domain ) : void | ||
Invoke ( TargetAccessDelegate func, object data ) : object | ||
Old_Step ( StepMode mode, StepFrame frame ) : ThreadCommandResult | ||
OnExecd ( |
||
OnManagedCallback ( Queue |
||
OnManagedThreadCreated ( TargetAddress end_stack_address ) : void | ||
OnManagedThreadExited ( ) : void | ||
OnModuleLoaded ( |
||
OnThreadExited ( |
||
ProcessOperation ( System.Operation operation ) : CommandResult | ||
ReleaseThreadLock ( ) : void | ||
ReleaseThreadLock ( |
||
RemoveBreakpoint ( BreakpointHandle handle ) : void | ||
ResumeUserThread ( CommandResult result ) : void | ||
SendCommand ( TargetAccessDelegate target ) : object | ||
SetMainReturnAddress ( TargetAddress main_ret ) : void | ||
SetManagedThreadData ( TargetAddress lmf_address, TargetAddress extended_notifications_addr ) : void | ||
SetTID ( long tid ) : void | ||
StartOperation ( System.Operation operation ) : CommandResult | ||
SuspendUserThread ( ) : void | ||
check_method_operation ( TargetAddress address, Method method, SourceAddress source, System.Operation operation ) : System.Operation |
Checks whether to do a "method operation". This is only used while doing a source stepping operation and ensures that we don't stop somewhere inside a method's prologue code or between two source lines.
|
|
check_runtime_version ( int major, int minor ) : bool | ||
child_breakpoint ( |
A breakpoint has been hit; now the sse needs to find out what do do: either ignore the breakpoint and continue or keep the target stopped and send out the notification. If @index is zero, we hit an "unknown" breakpoint - ie. a breakpoint which we did not create. Normally, this means that there is a breakpoint instruction (such as G_BREAKPOINT ()) in the code. Such unknown breakpoints are handled by the Debugger; one of the language backends may recognize the breakpoint's address, for instance if this is the JIT's breakpoint trampoline. Returns true if the target should remain stopped and false to continue stepping. If we can't find a handler for the breakpoint, the default is to stop the target and let the user decide what to do.
|
|
compute_frame ( TargetAddress address ) : |
||
frame_changed ( TargetAddress address, System.Operation operation ) : System.Operation |
This is called when a stepping operation is completed or something unexpected happened (received signal etc.). Normally, we just compute the new StackFrame here, but we may also discover that we need to do one more stepping operation, see check_method_operation().
|
|
handle_exception ( TargetAddress stack, TargetAddress exc, TargetAddress ip ) : bool | ||
is_in_step_frame ( StepFrame frame, TargetAddress address ) : bool |
Check whether @address is inside @frame.
|
|
is_managed_frame ( ) : bool | ||
lookup_breakpoint ( int index ) : Breakpoint | ||
save_stack ( long id ) : StackData | ||
step_over_breakpoint ( bool singlestep, TargetAddress until ) : bool | ||
throw_exception ( TargetAddress stack, TargetAddress exc, TargetAddress ip ) : ExceptionAction |
public CallMethod ( TargetAddress method, TargetAddress method_arg, |
||
method | TargetAddress | |
method_arg | TargetAddress | |
object_arg | ||
return | CommandResult |
public CallMethod ( TargetAddress method, long arg1, long arg2 ) : CommandResult | ||
method | TargetAddress | |
arg1 | long | |
arg2 | long | |
return | CommandResult |
public CallMethod ( TargetAddress method, long arg1, long arg2, long arg3, string string_argument ) : CommandResult | ||
method | TargetAddress | |
arg1 | long | |
arg2 | long | |
arg3 | long | |
string_argument | string | |
return | CommandResult |
protected CheckTrampoline ( |
||
instruction | ||
handler | TrampolineHandler | |
return | bool |
public DisassembleInstruction ( Method method, TargetAddress address ) : AssemblerLine | ||
method | Method | |
address | TargetAddress | |
return | AssemblerLine |
public DisassembleMethod ( Method method ) : AssemblerMethod | ||
method | Method | |
return | AssemblerMethod |
protected DoAbortInvocation ( long rti_id ) : void | ||
rti_id | long | |
return | void |
protected DoProcessEvent ( |
||
cevent | ||
return | void |
protected ExecuteOperation ( System.Operation operation ) : void | ||
operation | System.Operation | |
return | void |
public GetBacktrace ( Backtrace mode, int max_frames ) : Backtrace | ||
mode | Backtrace | |
max_frames | int | |
return | Backtrace |
public GetInstructionSize ( TargetAddress address ) : int | ||
address | TargetAddress | |
return | int |
public GetMemoryMaps ( ) : TargetMemoryArea[] | ||
return | TargetMemoryArea[] |
public Lookup ( TargetAddress address ) : Method | ||
address | TargetAddress | |
return | Method |
public ManagedCallback ( ManagedCallbackFunction func, CommandResult result ) : bool | ||
func | ManagedCallbackFunction | |
result | CommandResult | |
return | bool |
protected MethodHasSource ( Method method ) : bool | ||
method | Method | |
return | bool |
protected OperationCompleted ( TargetEventArgs args ) : void | ||
args | TargetEventArgs | |
return | void |
protected OperationCompleted ( TargetEventArgs args, bool suspended ) : void | ||
args | TargetEventArgs | |
suspended | bool | |
return | void |
public PrintObject ( Style style, |
||
style | Style | |
obj | ||
format | DisplayFormat | |
return | string |
public PrintType ( Style style, |
||
style | Style | |
type | ||
return | string |
public ProcessEvent ( |
||
cevent | ||
return | bool |
protected ProcessOperationEvent ( |
||
cevent | ||
return | void |
protected PushOperation ( System.Operation operation ) : void | ||
operation | System.Operation | |
return | void |
protected PushOperationNoExec ( System.Operation operation ) : void | ||
operation | System.Operation | |
return | void |
public ReadAddress ( TargetAddress address ) : TargetAddress | ||
address | TargetAddress | |
return | TargetAddress |
public ReadBuffer ( TargetAddress address, int size ) : byte[] | ||
address | TargetAddress | |
size | int | |
return | byte[] |
public ReadByte ( TargetAddress address ) : byte | ||
address | TargetAddress | |
return | byte |
public ReadInteger ( TargetAddress address ) : int | ||
address | TargetAddress | |
return | int |
public ReadLongInteger ( TargetAddress address ) : long | ||
address | TargetAddress | |
return | long |
public ReadMemory ( TargetAddress address, int size ) : TargetBlob | ||
address | TargetAddress | |
size | int | |
return | TargetBlob |
public ReadString ( TargetAddress address ) : string | ||
address | TargetAddress | |
return | string |
public Return ( ReturnMode mode ) : CommandResult | ||
mode | ReturnMode | |
return | CommandResult |
public RuntimeInvoke ( |
||
function | ||
object_argument | ||
param_objects | ||
flags | RuntimeInvokeFlags | |
result | RuntimeInvokeResult | |
return | void |
public SetRegisters ( Registers registers ) : void | ||
registers | Registers | |
return | void |
public SimpleLookup ( TargetAddress address, bool exact_match ) : Symbol | ||
address | TargetAddress | |
exact_match | bool | |
return | Symbol |
protected SingleSteppingEngine ( ThreadManager manager, |
||
manager | ThreadManager | |
process | ||
return | System |
public SingleSteppingEngine ( ThreadManager manager, |
||
manager | ThreadManager | |
process | ||
inferior | ||
pid | int | |
return | System |
public SingleSteppingEngine ( ThreadManager manager, |
||
manager | ThreadManager | |
process | ||
start | ProcessStart | |
return | System |
public StartApplication ( CommandResult result ) : CommandResult | ||
result | CommandResult | |
return | CommandResult |
public StartExecedChild ( CommandResult result ) : CommandResult | ||
result | CommandResult | |
return | CommandResult |
public StartForkedChild ( CommandResult result ) : CommandResult | ||
result | CommandResult | |
return | CommandResult |
public StartThread ( CommandResult result ) : CommandResult | ||
result | CommandResult | |
return | CommandResult |
public Step ( ThreadingModel model, StepMode mode, StepFrame frame ) : CommandResult | ||
model | ThreadingModel | |
mode | StepMode | |
frame | StepFrame | |
return | CommandResult |
public WriteAddress ( TargetAddress address, TargetAddress value ) : void | ||
address | TargetAddress | |
value | TargetAddress | |
return | void |
public WriteBuffer ( TargetAddress address, byte buffer ) : void | ||
address | TargetAddress | |
buffer | byte | |
return | void |
public WriteByte ( TargetAddress address, byte value ) : void | ||
address | TargetAddress | |
value | byte | |
return | void |
public WriteInteger ( TargetAddress address, int value ) : void | ||
address | TargetAddress | |
value | int | |
return | void |
public WriteLongInteger ( TargetAddress address, long value ) : void | ||
address | TargetAddress | |
value | long | |
return | void |
protected disable_extended_notification ( NotificationType type ) : void | ||
type | NotificationType | |
return | void |
protected do_continue ( TargetAddress until ) : void | ||
until | TargetAddress | |
return | void |
protected enable_extended_notification ( NotificationType type ) : void | ||
type | NotificationType | |
return | void |
protected insert_lmf_breakpoint ( TargetAddress lmf_address ) : void | ||
lmf_address | TargetAddress | |
return | void |
protected insert_temporary_breakpoint ( TargetAddress address ) : void | ||
address | TargetAddress | |
return | void |
protected remove_temporary_breakpoint ( ) : void | ||
return | void |
protected request_managed_callback ( |
||
data | ||
return | void |
protected restore_stack ( StackData stack ) : void | ||
stack | StackData | |
return | void |
protected set_registers ( Registers registers ) : void | ||
registers | Registers | |
return | void |
protected update_current_frame ( |
||
new_frame | ||
return | void |
protected StackFrame,System.Diagnostics current_frame | ||
return |