Inside the Eiffel Debugger

Construction.png Not Ready for Review: This Page is Under Development!

Overview

  • main Eiffel classes: DEBUGGER_MANAGER, APPLICATION_EXECUTION, APPLICATION_STATUS, DUMP_VALUE, ABSTRACT_DEBUG_VALUE, DEBUGGED_OBJECT

Platform specific

Classic system:

  • main Eiffel class: APPLICATION_EXECUTION_CLASSIC, APPLICATION_STATUS_CLASSIC, IPC_ENGINE, STOPPED_HDLR
  • main runtime entries:
    • folder Src/C/ipc (Inter Process Communication)
Src/ipc/app: for the application side (debuggee)
Src/ipc/ewb: for the Eiffel debugger side (debugger)
Src/ipc/daemon: for the debugger daemon (kind of proxy between ewb and app)
Src/ipc/shared: shared code for the communication, (un)serialization, ...

Dotnet system:

  • Check Src/framework/cli_debugger

Debugger, launcher ...

  • DEBUGGER_MANAGER: the main interface to control the debugger
  • DEBUGGER_CONTROLLER: used internally to request a start, step, kill ... operation
  • DEBUGGER_EXECUTION_PARAMETERS: hold the parameters to launch a debugging session (i.e: arguments, working directory, environment variables)

Execution

  • APPLICATION_EXECUTION: when a debugging session is launched, the debugger create an instance of APPLICATION_EXECUTION which represents the debuggee execution
  • APPLICATION_STATUS: associated with APPLICATION_EXECUTION, it holds various status,state,data related to the execution, and execution stopped state.

Debuggee objects

  • DEBUGGED_OBJECT: mainly use to retrieve debuggee data given an address value
  • DUMP_VALUE: result of evaluation, it is used to get the effective value for debugger's usage (such as display)
  • ABSTRACT_DEBUG_VALUE (with EIFNET_ prefix for dotnet specific versions): represent the debuggee object, with class, type, address, attributes (if any) ....
  • ICOR_DEBUG_VALUE (for dotnet): Eiffel classes mapping the ICorDebug value classes