Debugger Class Fling OS
The main class for handling debug communications with the Fling OS kernel.
Inheritance Hierarchy

System Object
  Kernel.Debug.Debugger Debugger

Namespace: Kernel.Debug.Debugger
Assembly: Kernel.Debug.Debugger (in Kernel.Debug.Debugger.exe) Version: 1.0.0.0 (1.0.0.0)
Syntax

public sealed class Debugger : IDisposable

The Debugger type exposes the following members.

Constructors

  NameDescription
Public methodDebugger
Initialises a new instance on the debugger but does not connect it to the kernel. Use Init(String, String).
Top
Methods

  NameDescription
Public methodBeginBreak
Breaks OS execution at the nearest possible moment. Note: EndBreak has to be called unless execution is immediately continued.
Public methodClearInt3
Performs a delayed-clear of an Int3 at the specified address.
Public methodContinue
Continues OS execution - can be called immediately after OnBreak without EndBreak being called.
Public methodDispose
Disposes of the debugger instance cleanly.
Public methodEndBreak
Completes breaking of OS execution. Must be called immediately after OnBreak event is fired unless Continue is immediately called.
Public methodGetArguments
Gets the argument values as they were immediately prior to the break interrupt.
Public methodGetBreakAddress
Sends a request for the brwak address.
Public methodGetLocals
Gets the locals values as they were immediately prior to the break interrupt.
Public methodGetMemory
Gets the value of the specified memory.
Public methodGetRegisters
Gets the register values as they were immediately prior to the break interrupt.
Private methodHandle_BreakCmd
Handles a received break command.
Private methodHandle_ClearInt3Cmd
Handles a received ClearInt3 command.
Private methodHandle_ContinueCmd
Handles a received Continue command.
Private methodHandle_GetArgumentsCmd
Handles a received GetArguments command.
Private methodHandle_GetBreakAddressCmd
Handles a received GetBreakAddress command.
Private methodHandle_GetLocalsCmd
Handles a received GetLocals command.
Private methodHandle_GetMemoryCmd
Handles a received GetMemory command.
Private methodHandle_GetRegistersCmd
Handles a received GetRegisters command.
Private methodHandle_MessageCmd
Handles a received Message command.
Private methodHandle_SendArgumentsCmd
Handles a received SendArguments command.
Private methodHandle_SendBreakAddressCmd
Handles a received SendBreakAddress command.
Private methodHandle_SendLocalsCmd
Handles a received SendLocals command.
Private methodHandle_SendMemoryCmd
Handles a received SendMemory command.
Private methodHandle_SendRegistersCmd
Handles a received SendRegisters command.
Private methodHandle_SetInt3Cmd
Handles a received SetInt3 command.
Private methodHandle_StepNextCmd
Handles a received StepNext command.
Private methodHandleCommand(Byte)
Handles the specified command as though it were received from the OS being debugged.
Private methodHandleCommand(DebugCommands)
Handles the specified command as though it were received from the OS being debugged.
Public methodInit
Initialises the debugger, connects to the specified pipe and loads debug info from the build directory.
Private methodLoadCurrentIlOp
Loads the current line's IL Op info (assuming we aren't in a plugged method)
Private methodLoadCurrentMethodASM_Plugged
Loads the current method's ASM assuming it is plugged.
Private methodLoadCurrentMethodASM_Unplugged
Loads the current method's ASM assuming it is not plugged.
Private methodLoadCurrentMethodCS
Loads the current method's C# code (if it isn't plugged).
Public methodLoadMemoryValue
Adds a memory request to the queue of memory requests.
Private methodLoadMemoryValue_Run
Underlying method that asynchronously executes all the memory requests.
Private methodSendPendingInt3Changes
Public methodSetInt3
Performs a delayed-set of an Int3 at the specified address.
Public methodStepNext
Performs an Int1 step
Public methodStepToNextIL
Steps to the beggining of the next line of IL code.
Public methodStop
Stops the debugger and closes the connection.
Private methodTryLoadCurrentPluggedMethod
Loads the current method from the debug database based on the break address.
Private methodTryLoadCurrentUnpluggedMethod
Loads the current method from the debug database based on the break address.
Public methodWaitForCommand
Waits for and then handles an incoming command from the kernel
Top
Fields

  NameDescription
Private fieldarguments
The current method's arguments.
Private fieldbreakAddress
The address of the last instruction executed before the break.
Private fieldcurrentCSLine
The current C# line info.
Private fieldcurrentCSMethod
The current C# method info.
Private fieldcurrentCSSymbol
The current C# symbol info.
Private fieldcurrentILOpInfo
The IL Op info for the current line assuming we are not in a plugged method.
Private fieldcurrentMethod
The current method determined from break address.
Private fieldcurrentMethodASM
The current method's ASM text.
Private fieldcurrentNearestLabels
The nearest labels to the break address.
Private fieldcurrentNearestMethodBasedLabel
The nearest label to the break address that is a method-based label e.g. "method_METHODID.IL_OPNUMBER_ASMNUMBER"
Private fieldGetMemory_Data
Private fieldGetMemory_Length
Private fieldlastILOpInfo
The last IL Op info that was found (if any).
Private fieldLoadMemoryRequests
The list of requests for memory.
Private fieldlocals
The current method's locals.
Private fieldMode_64bit
Private fieldOnBreak
Private fieldOnConnected
Private fieldOnInvalidCommand
Private fieldPendingClearInt3Addresses
Private fieldPendingSetInt3Addresses
Private fieldregisters
The data of the registers when execution was broken.
Public fieldState
The current debugger state.
Public fieldTheASMFile
The kernel's main assembler file.
Private fieldTheElfMap
The Elf Map for the kernel being debugged.
Public fieldThePDBDumpManager
The PDB dump manager used to access IL to C# mapping info.
Private fieldTheSerial
The serial connection to the kernel.
Top
Properties

  NameDescription
Public propertyArguments
The current method's arguments.
Public propertyBreakAddress
The address of the last instruction executed before the break.
Public propertyCurrentASMLineLength
The length of the current ASM line.
Public propertyCurrentASMLineStartOffset
The offset from the start of the method ASM to the current ASM line
Public propertyCurrentCSLine
The current C# line info.
Public propertyCurrentCSMethod
The current C# method info.
Public propertyCurrentCSSymbol
The current C# method info.
Public propertyCurrentILOpInfo
The IL Op info for the current line assuming we are not in a plugged method.
Public propertyCurrentMethod
The current method determined from break address.
Public propertyCurrentMethodASM
The current method's ASM text.
Public propertyCurrentNearestLabels
The nearest labels to the break address.
Public propertyCurrentNearestMethodBasedLabel
The nearest label to the break address that is a method-based label e.g. "method_METHODID.IL_OPNUMBER_ASMNUMBER"
Public propertyCurrentNearestMethodLabel
The nearest label to the break address that is a method label e.g. "method_METHODID"
Public propertyLastILOpInfo
The last IL Op info that was found (if any).
Public propertyLocals
The current method's locals.
Public propertyRegisters
The data of the registers when execution was broken.
Top
Events

  NameDescription
Public eventOnBreak
Fired when the Break command is received.
Public eventOnConnected
Fired when the debugger first becomes connected.
Public eventOnInvalidCommand
Fired when an invalid command is received.
Top
See Also