Platform debug model
The platform debug model defines generic debug interfaces that are intended
to be implemented and extended in concrete, language-specific implementations.
Artifacts
The model includes classes that represent different artifacts in a program
under debug. All of the artifacts implement
IDebugElement
in addition to their own interfaces. The model includes definitions for
the following artifacts:
- Debug targets (
IDebugTarget)
- a debuggable execution context, such as a process or virtual machine
- Expressions (
IExpression)
- a snippet of code that can be evaluated to produce a value
- Memory blocks (
IMemoryBlock)
- a contiguous segment of memory in an execution context
- Registers (
IRegister)
- a named variable in a register group
- Register groups (
IRegisterGroup)
- a group of registers assigned to a stack frame
- Stack frames (
IStackFrame)
- an execution context in a suspended thread containing local variables and
arguments
- Threads (
IThread)
- a sequential flow of execution in a debug target containing stack frames
- Values (
IValue)
- the value of a variable
- Variables (
IVariable)
- a visible data structure in a stack frame or value
- Watch expressions (
IWatchExpression)
- an expression that updates its value when provided with a particular context
Plug-ins that implement language-specific debuggers typically extend these
interfaces to include language-specific behavior. All debug elements can
return the id of the plug-in that originated them. This is important for
registering other classes that are associated with a debug model, such as UI
classes.
Actions
The model also includes interfaces that define a set of debug actions that
are common behaviors among debug artifacts. These interfaces are
implemented by debug elements where appropriate. They include the
following actions:
- Disconnect (
IDisconnect)
- the ability to end a debug session with a target program and allow the target
to continue running
- Step (
IStep)
- the ability to step into, over, and return from the current execution point
- Step filters (
IStepFilters)
- the ability to enable or disable filtering of step operations so that a debug target can apply filters to
steps when appropriate
- Suspend and resume (
ISuspendResume)
- the ability to suspend and resume execution
- Terminate (
ITerminate)
- the ability to terminate an execution context
- Modify a value (
IValueModification)
- the ability to modify the value of a variable
If you look at the definitions for the platform debug elements, you will see
that different elements implement different debug actions. Standard
interfaces for the elements and their behaviors allow the platform to provide
abstract implementations of utility classes and UI support that can be extended
for concrete implementations of debuggers.
Events
Debug events (
DebugEvent)
are used to describe events that occur as a program is being debugged.
Debug events include the debug element that is associated with the event.
Each kind of debug element has a specific set of events that it supports as
documented in
DebugEvent.
Debugger implementations can add application specific debug events using a designation of
DebugEvent.MODEL_SPECIFIC as the kind of event. A client data field can be used in this case
to add model-specific information about the event.
Debugger UI classes typically listen to specific events for elements in order
display information about changes that occur in the elements. Debug events
arrive in groups called debug event sets. Events that occur at the
same point of execution in a program arrive in the same set. Clients
should implement an
IDebugEventSetListener
and register the listener with the
org.eclipse.debug.core
plug-in in order to receive debug events.