Notice: This Wiki is now read only and edits are no longer possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.
PTP/designs/debugger protocol
Contents
- 1 Overview
- 2 Terminiology
- 3 Protocol Format
- 4 Commands
- 4.1 BREAKPOINT_AFTER
- 4.2 BREAKPOINT_CONDITION
- 4.3 BREAKPOINT_DELETE
- 4.4 BREAKPOINT_DISABLE
- 4.5 BREAKPOINT_ENABLE
- 4.6 BREAKPOINT_SET_FUNCTION
- 4.7 BREAKPOINT_SET_LINE
- 4.8 CLI
- 4.9 DATA_EXPRESSION
- 4.10 DATA_PARTIAL_AIF
- 4.11 DATA_READ_MEMORY
- 4.12 DATA_WRITE_MEMORY
- 4.13 DATA_TYPE
- 4.14 EXEC_GO
- 4.15 EXEC_INTERRUPT
- 4.16 EXEC_STEP
- 4.17 EXEC_TERMINATE
- 4.18 GET_ARGUMENTS
- 4.19 GET_SIGNALS
- 4.20 GET_STACK_DEPTH
- 4.21 GET_STACK_FRAMES
- 4.22 GET_THREADS
- 4.23 GET_VARIABLES_GLOBAL
- 4.24 GET_VARIABLES_LOCAL
- 4.25 SET_CURRENT_STACK_FRAME
- 4.26 SET_THREAD
- 4.27 SET_WATCHPOINT
- 4.28 START_SESSION
- 5 Events
- 5.1 ARGUMENTS
- 5.2 BREAKPOINT_SET
- 5.3 DATA
- 5.4 DATA_PARTIAL
- 5.5 DATA_VALUE
- 5.6 DATA_MEMORY
- 5.7 DATA_TYPE
- 5.8 ERROR
- 5.9 EXIT_NORMAL
- 5.10 EXIT_SIGNAL
- 5.11 OK
- 5.12 SIGNALS
- 5.13 STACK_DEPTH
- 5.14 STACK_FRAMES
- 5.15 SUSPEND_BREAKPOINT
- 5.16 SUSPEND_INTERRUPT
- 5.17 SUSPEND_SIGNAL
- 5.18 SUSPEND_STEP
- 5.19 THREAD_INFO
- 5.20 THREAD_SELECT
- 5.21 VARIABLES
Overview
This document describes the debugger proxy communication protocol used by the PTP debugger. This protocol is used to communicate between the debugger front-end in Eclipse, and a debug server running on a target system. The primary purpose of the protocol is for controlling application processes for debugging purposes.
Terminiology
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC 2119].
"PTP debugger" refers collectively to the Java plugins and external components that implement the Eclipse parallel debugger.
"Front-end" refers to the debug model, user interface and parallel debug interface (PDI) in Eclipse.
"Debug server" (or just "server") refers to an external (from Eclipse) component that interacts with the target application being debugged. In the case of the SDM, the "server" is actually made up of many separate processes.
Protocol Format
The communication protocol used between the front-end and the debug server is a simple text-based asynchronous command/event protocol. The front-end sends one or more commands to the server, which in turn will generate events that are returned to the front-end. One command may generate multiple events, but an event is always associated with a particular command. A command is not completed until either a corresponding event is received.
Transaction IDs
Transaction IDs (TIDs) are numbers that are used to match commands and events. Since one command may generate multiple events, TIDs are essential in order to determine which command generated an event. This means that every event MUST have a TID that matches a corresponding command.
TIDs are only unique for uncompleted commands, not necessarily for the whole session.
Servers SHOULD assume that a particular TID MAY be reused.
Servers SHOULD NOT assume anything about the numbering or ordering of TIDs.
Any events received with an invalid TID (i.e. with no corresponding command) SHALL be discarded.
Bitmaps
Bitmaps are key to communcation between the front-end and the server. The protocol assumes that the debugger is controlling a multi-process application. Each process in the application is identified by a number in the interval [0, N-1], where N is the total number of processes. Each bit in the bitmap corresponds to one of the processes being debugged. Process n | 0 <= n < N corresponds to the bit with value 2^n in the bitmap. Any number of bits can be set in a bitmap.
For example, processes 5,7,9-15 would be represented by the bitmap (assuming the right-most bit is 2^0):
1 1 1 1 1 1 1 0 1 0 1 0 0 0 0 0
Bitmaps are transmitted as a hex character strings, so the above bitmap would actually be represented by the string FEA0
.
Bitmaps are used in both commands and events. When a debug command is sent, it includes a bitmap specifying which processes the command is intended for. When an event is received, it contains a bitmap indicating which processes generated the event.
Message Format
Commands and events consist of sequences of ASCII characters formatted into a message. A message is transmitted in the following format:
MESSAGE ⇒ LENGTH " " COMMAND_OR_EVENT
LENGTH and COMMAND_OR_EVENT are separated by a space (hex 20). The LENGTH is the length of the COMMAND_OR_EVENT portion of the message including the space. COMMAND_OR_EVENT is the actual text of the command or event.
COMMAND_OR_EVENT ⇒ COMMAND | EVENT
The COMMAND_OR_EVENT portion of the message contains a header part followed by a sequence of arguments separated by spaces. Each argument is a string formatted using the String Format described below. The command format is described in more detail in the Commands section. The event format is described in more detail in the Events section.
String Format
Strings are transmitted using the following format:
STRING ⇒ LENGTH ":" CHARACTERS
where LENGTH is a fixed length 8 digit hexadecimal representation of the length of the string, ':' is a colon character (hex 3A), and CHARACTERS are the actual ASCII characters in the string. No string terminating character (e.g. NULL) is ever transmitted.
For example, the string "A String" would be formatted as:
00000008:A String
A zero length string would be formatted as:
00000000:
Commands
Commands are formatted as simple ASCII text strings. A command consists of a header and a body, separated by a space (hex 20), as follows:
COMMAND ⇒ COMMAND_HEADER " " COMMAND_BODY
The command header consists of three fixed length hexadecimal numbers separated by colons (hex 3A), so it is itself fixed length. The format of the header is:
COMMAND_HEADER ⇒ COMMAND_ID ":" TID ":" NUM_ARGS
where
- COMMAND_ID is a 4 digit hexadecimal number containing the command to be performed
- TID is an 8 digit hexadecimal number containing the transaction ID assigned to this command
- NUM_ARGS is an 8 digit hexadecimal number containing the number of space separated elements in the command body
The command body consists of NUM_ARGS strings separated by spaces.
COMMAND_BODY ⇒ STRING { " " STRING }
The following sections describe the currently defined commands.
BREAKPOINT_AFTER
Message Format
BREAKPOINT_AFTER_COMMAND ⇒ "0008:TID:00000003" " " BITMAP " " BREAKPOINT_ID " " COUNT
- Description
- Causes breakpoint specified by BREAKPOINT_ID to be ignored for COUNT hits.
Arguments
- BITMAP specifies the processes this command applies to.
- BREAKPOINT_ID is the ID of the breakpoint.
- COUNT is the number of times the breakpoint will be ignored.
BREAKPOINT_CONDITION
Message Format
BREAKPOINT_CONDITION_COMMAND ⇒ "0007:TID:00000003" " " BITMAP " " BREAKPOINT_ID " " EXPRESSION
- Description
- Causes the breakpoint specified by BREAKPOINT_ID to only trigger if the expression specified by EXPRESSION evaluates to true.
Arguments
- BITMAP specifies the processes this command applies to.
- BREAKPOINT_ID is the ID of the breakpoint.
- EXPRESSION is an expression that will be evaluated to determine if the breakpoint event should be triggered.
BREAKPOINT_DELETE
Message Format
BREAKPOINT_DELETE_COMMAND ⇒ "0004:TID:00000002" " " BITMAP " " BREAKPOINT_ID
- Description
- Remove a breakpoint from the target processes.
Arguments
- BITMAP specifies the processes this command applies to.
- BREAKPOINT_ID is the ID of the breakpoint to delete.
BREAKPOINT_DISABLE
Message Format
BREAKPOINT_DISABLE_COMMAND ⇒ "0006:TID:00000002" " " BITMAP " " BREAKPOINT_ID
- Description
- Disable a breakpoint in the target processes. This prevents the breakpoint from firing, but does not remove it.
Arguments
- BITMAP specifies the processes this command applies to.
- BREAKPOINT_ID is the ID of the breakpoint to disable.
BREAKPOINT_ENABLE
Message Format
BREAKPOINT_ENABLE_COMMAND ⇒ "0005:TID:00000002" " " BITMAP " " BREAKPOINT_ID
- Description
- Enable a breakpoint that has been disabled in the target processes.
Arguments
- BITMAP specifies the processes this command applies to.
- BREAKPOINT_ID is the ID of the breakpoint to enable.
BREAKPOINT_SET_FUNCTION
Message Format
BREAKPOINT_SET_FUNCTION_COMMAND ⇒ "0003:TID:00000009" " " BITMAP " " BREAKPOINT_ID " " IS_TEMPORARY " " IS_HARDWARE " " FILE " " FUNCTION " " CONDITION " " IGNORE_COUNT " " THREAD_ID
- Description
- Set a breakpoint on the function FUNCTION in source file FILE.
Arguments
- BITMAP specifies the processes this command applies to.
- BREAKPOINT_ID is the ID used to reference this breakpoint.
- IS_TEMPORARY is a flag to indicate the breakpoint is temporary.
- IS_HARDWARE is a flag indicating that a hardware breakpoint should be set.
- FILE is the file name of the source file containing the function.
- FUNCTION is the name of the function on which the breakpoint will be set.
- CONDITION is a conditional expression.
- IGNORE_COUNT is an ignore count.
- THREAD_ID is not currently used.
- Events
- BREAKPOINT_SET, ERROR
BREAKPOINT_SET_LINE
Message Format
BREAKPOINT_SET_LINE_COMMAND ⇒ "0002:TID:00000009" " " BITMAP " " BREAKPOINT_ID " " IS_TEMPORARY " " IS_HARDWARE " " FILE " " LINE " " CONDITION " " IGNORE_COUNT " " THREAD_ID
- Description
- Set a breakpoint at line LINE of source file FILE.
Arguments
- BITMAP specifies the processes this command applies to.
- BREAKPOINT_ID is the ID used to reference this breakpoint.
- IS_TEMPORARY is a flag to indicate the breakpoint is temporary.
- IS_HARDWARE is a flag indicating that a hardware breakpoint should be set.
- FILE is the file name of the source file containing the function.
- LINE is the line number on which the breakpoint will be set.
- CONDITION is a conditional expression.
- IGNORE_COUNT is an ignore count.
- THREAD_ID is not currently used.
- Events
- BREAKPOINT_SET, ERROR
CLI
Message Format
CLI_COMMAND ⇒ "001C:TID:00000002" " " BITMAP " " COMMAND
- Description
- Execute an arbitrary backend-specific command.
Arguments
- BITMAP specifies the processes this command applies to.
- COMMAND is an arbitrary command that will be passed directly to the backend debug engine.
DATA_EXPRESSION
Message Format
DATA_EXPRESSION_COMMAND ⇒ "0010:TID:00000002" " " BITMAP " " EXPRESSION
- Description
- Evaluate an arbitrary expression in the target processes.
Arguments
- BITMAP specifies the processes this command applies to.
- EXPRESSION is the expression to evaluate.
DATA_PARTIAL_AIF
Message Format
DATA_PARTIAL_AIF_COMMAND ⇒ "001E:TID:00000005" " " BITMAP " " EXPRESSION " " NAME " " LIST_CHILDREN " " EXPRESS
- Description
- Evaluate an expression and return a partial value. This is used if the resulting value is very large (e.g. an array).
Arguments
- BITMAP specifies the processes this command applies to.
- EXPRESSION is the expression to evaluate.
- NAME specifies a name to use to refer to the expression. If the named expression already exists, this expression will be used instead of evaluating EXPRESSION.
- LIST_CHILDREN specifies that full type traversal should be performed.
- EXPRESS indicates that the minimum amount of information should be returned.
- Events
- DATA_PARTIAL, ERROR
DATA_READ_MEMORY
Message Format
DATA_READ_MEMORY_COMMAND ⇒ "0018:TID:NUM_ARGS" " " BITMAP " " OFFSET " " ADDRESS " " FORMAT " " WORD_SIZE " " ROWS " " COLS " " [ AS_CHAR ]
- Description
- Read a block of memory from the target processes.
Arguments
- BITMAP specifies the processes this command applies to.
- OFFSET is an offset to add to ADDRESS before fetching memory
- ADDRESS is an expression specifying the address of the first memory word to read.
- FORMAT is the format used to print the memory words. See Output Formats
- WORD_SIZE is the size of each memory word in bytes.
- ROWS is the number of rows in the output table.
- COLS is the number of columns in the output table.
- AS_CHAR optionally specifies that each row should include an ASCII dump with this character as a padding character.
- Events
- DATA_MEMORY, ERROR
DATA_WRITE_MEMORY
Message Format
DATA_WRITE_MEMORY_COMMAND ⇒ "00019:TID:00000006" " " BITMAP " " OFFSET " " ADDRESS " " FORMAT " " WORD_SIZE " " VALUE
- Description
- Write a value into a block of memory to the target processes.
Arguments
- BITMAP specifies the processes this command applies to.
- OFFSET is an offset to add to ADDRESS before writing memory
- ADDRESS is an expression specifying the address of the first memory word to read.
- FORMAT is not used.
- WORD_SIZE is the size of each memory word in bytes.
- VALUE is the value to be written into each memory location.
DATA_TYPE
Message Format
DATA_TYPE_COMMAND ⇒ "0011:TID:00000002" " " BITMAP " " EXPRESSION
- Description
- Get the result type after evaluating the expression specified by EXPRESSION.
Arguments
- BITMAP specifies the processes this command applies to.
- EXPRESSION is the expression to evaluate.
EXEC_GO
Message Format
EXEC_GO_COMMAND ⇒ "000A:TID:00000001" " " BITMAP
- Description
- Start or resume execution of the target processes.
Arguments
- BITMAP specifies the processes this command applies to.
- Events
- EXIT_NORMAL, EXIT_SIGNAL, SUSPEND_BREAKPOINT, SUSPEND_SIGNAL, ERROR
EXEC_INTERRUPT
Message Format
EXEC_INTERRUPT_COMMAND ⇒ "000D:TID:00000001" " " BITMAP
- Description
- Suspend execution of the target processes. This command can be sent before a previous command has completed.
Arguments
- BITMAP specifies the processes this command applies to.
- Events
- SUSPEND_INTERRUPT, ERROR
EXEC_STEP
Message Format
EXEC_STEP_COMMAND ⇒ "000B:TID:00000003" " " BITMAP " " COUNT " " TYPE
- Description
- Return the stack frame depth of the target.
Arguments
- BITMAP specifies the processes this command applies to.
- COUNT is a repeat count.
- TYPE is the type of the command. Options are "0" for step over, "1" for step into, and "2" for step return.
- Events
- SUSPEND_STEP, ERROR
EXEC_TERMINATE
Message Format
TERMINATE_COMMAND ⇒ "000C:TID:00000001" " " BITMAP
- Description
- Terminate the target processes by sending a signal. The command can be sent before the previous command is completed.
Arguments
- BITMAP specifies the processes this command applies to.
- Events
- EXIT_SIGNAL, ERROR
GET_ARGUMENTS
Message Format
GET_ARGUMENTS_COMMAND ⇒ "0013:TID:00000003" " " BITMAP " " LOW " " HIGH
- Description
- List the arguments from the stack frames between LOW and HIGH inclusively.
Arguments
- BITMAP specifies the processes this command applies to.
- LOW specifies the low stack frame number.
- HIGH specifies the high stack frame number.
GET_SIGNALS
Message Format
GET_SIGNALS_COMMAND ⇒ "001A:TID:NUM_ARGS" " " BITMAP [ " " NAME ]
- Description
- List information about how the debugger handles signals. If a signal name is provided, then only information about that signal will be listed.
Arguments
- BITMAP specifies the processes this command applies to.
- NAME optionally specifies the signal.
GET_STACK_DEPTH
Message Format
GET_STACK_DEPTH_COMMAND ⇒ "0017:TID:00000001" " " BITMAP
- Description
- Return the stack frame depth of the target.
Arguments
- BITMAP specifies the processes this command applies to.
- Events
- STACK_DEPTH, ERROR
GET_STACK_FRAMES
Message Format
LIST_STACK_FRAMES_COMMAND ⇒ "000E:TID:00000003" " " BITMAP " " LOW " " HIGH
- Description
- List the stack frames between LOW and HIGH inclusive.
Arguments
- BITMAP specifies the processes this command applies to.
- LOW is the low stack frame number.
- HIGH is the high stack frame number.
- Events
- STACK_FRAMES, ERROR
GET_THREADS
Message Format
GET_THREADS_COMMAND ⇒ "0015:TID:00000001" " " BITMAP
- Description
- Obtain information about all threads in the current process.
Arguments
- BITMAP specifies the processes this command applies to.
- Events
- THREAD_INFO, ERROR
GET_VARIABLES_GLOBAL
Message Format
GET_VARIABLES_GLOBAL_COMMAND ⇒ "0014:TID:00000001" " " BITMAP
- Description
- List all global (non-static) variables in the process.
Arguments
- BITMAP specifies the processes this command applies to.
GET_VARIABLES_LOCAL
Message Format
GET_VARIABLES_LOCAL_COMMAND ⇒ "0012:TID:00000001" " " BITMAP
- Description
- List all local variables in current stack frame of the current process.
Arguments
- BITMAP specifies the processes this command applies to.
SET_CURRENT_STACK_FRAME
Message Format
SET_CURRENT_STACK_FRAME_COMMAND ⇒ "000F:TID:00000002" " " BITMAP " " LEVEL
- Description
- Set the current stack frames to LEVEL.
Arguments
- BITMAP specifies the processes this command applies to.
- LEVEL is the stack frame number.
SET_THREAD
Message Format
SET_THREAD_COMMAND ⇒ "0016:TID:00000002" " " BITMAP " " THREAD_ID
- Description
- Makes the thread specified by THREAD_ID the current thread.
Arguments
- BITMAP specifies the processes this command applies to.
- THREAD_ID is the thread number.
- Events
- THREAD_SELECT, ERROR
SET_WATCHPOINT
Message Format
SET_WATCHPOINT_COMMAND ⇒ "0009:TID:00000006" " " BITMAP " " BREAKPOINT_ID " " EXPRESSION " " IS_ACCESS " " IS_READ " " IGNORE_COUNT
- Description
- Set a watchpoint on the expression EXPRESSION.
Arguments
- BITMAP specifies the processes this command applies to.
- BREAKPOINT_ID is the ID used to reference this breakpoint.
- EXPRESSION is the expression on which the watchpoint will be set.
- IS_ACCESS is a flag indicating that the watchpoint should trigger on any kind of access.
- IS_READ is a flag indicating that the watchpoint should trigger only on read accesses.
- IGNORE_COUNT is not used.
- Events
- BREAKPOINT_SET, ERROR
START_SESSION
Message Format
START_SESSION_COMMAND ⇒ "0001:TID:NUM_ARGS" " " PROGRAM " " PATH " " DIRECTORY { " " ARGUMENT }
- Description
- Start the debug session. Note that this command does not take a bitmap; it is assumed to be global.
Arguments
- PROGRAM is the name of the executable being debugged.
- PATH is the path to the executable.
- DIRECTORY is the current working directory.
- ARGUMENT is an argument that will be passed to the application program.
Events
Events are used by the server to communicate the results of commands or other information back to the front-end. As mentioned previously, each event MUST contain a tid of a corresponding command.
Events, like commands, are formatted as simple ASCII text strings. An event consists of a header and a body, separated by a space (hex 20), as follows:
EVENT ⇒ EVENT_HEADER " " EVENT_BODY
The event header consists of three fixed length hexadecimal numbers separated by colons (hex 3A), so it is itself fixed length. The format of the header is:
EVENT_HEADER ⇒ EVENT_ID ":" TID ":" NUM_ARGS
where
- EVENT_ID is a 4 digit hexadecimal number representing the type of event
- TID is an 8 digit hexadecimal number containing the transaction ID of the command that generated this event
- NUM_ARGS is an 8 digit hexadecimal number containing the number of space separated elements in the event body
The event body consists of NUM_ARGS strings separated by spaces. Debug events always have a bitmap as the first argument in the body. This bitmap specifies the processes that generated the event.
EVENT_BODY ⇒ BITMAP { " " STRING }
The following sections describe the currently defined events.
ARGUMENTS
Message Format
ARGUMENTS_EVENT ⇒ "006D:TID:NUM_ARGS" " " BITMAP { " " NAME }
- Description
- Provides a list of arguments.
Arguments
- BITMAP specifies the processes that generated this event.
- NAME is the name of an argument.
BREAKPOINT_SET
Message Format
BREAKPOINT_SET_EVENT ⇒ "0068:TID:NUM_ARGS" " " BITMAP " " BREAKPOINT_ID " " BPID " " IGNORE " " SPECIAL " " DELETED " " TYPE " " FILE " " FUNCTION " " ADDRESS " " LINE " " HIT_COUNT
- Description
- Indicates that a breakpoint was successfully set.
Arguments
- BITMAP specifies the processes that generated this event.
- BREAKPOINT_ID the ID of the breakpoint that was set.
The remainder of the event contains the status of the breakpoint:
- BPID the ID of the breakpoint
- IGNORE a field indicating that the breakpoint will be ignored.
- SPECIAL a field indicating that the breakpoint is special.
- DELETED a field indicating that the breakpoint has been deleted.
- TYPE a field giving the type of breakpoint.
- FILE the source file in which the breakpoint is set.
- FUNCTION the function on which the breakpoint is set.
- ADDRESS the address of the breakpoint.
- LINE the line on which the breakpoint is set.
- HIT_COUNT the number of times that the breakpoint has been triggered.
DATA
Message Format
DATA_EVENT ⇒ "006A:TID:00000004" " " BITMAP " " AIF_TYPE " " AIF_DATA " " TYPE
- Description
- An event containing the value of a variable or expression in AIF format.
Arguments
- BITMAP specifies the processes that generated this event.
- AIF_TYPE is the AIF type of the value.
- AIF_DATA is the AIF data of the value.
- TYPE is a language-specific type description.
DATA_PARTIAL
Message Format
DATA_PARTIAL_EVENT ⇒ "0079:TID:00000004" " " BITMAP " " AIF_TYPE " " AIF_DATA " " TYPE
- Description
- An event containing the partial value of a variable or expression in AIF format. This is used to return partial values when the data structure is very large (e.g. an array).
Arguments
- BITMAP specifies the processes that generated this event.
- AIF_TYPE is the AIF type of the value.
- AIF_DATA is the AIF data of the value.
- TYPE is a language-specific type description.
DATA_VALUE
Message Format
DATA_VALUE_EVENT ⇒ "0078:TID:00000002" " " BITMAP " " VALUE
- Description
- An event containing the string representation of the value of a variable or expression.
Arguments
- BITMAP specifies the processes that generated this event.
- VALUE is the value.
DATA_MEMORY
Message Format
DATA_MEMORY_EVENT ⇒ "0075:TID:NUM_ARGS" " " BITMAP " " ADDRESS " " NEXT_ROW " " PREV_ROW " " NEXT_PAGE " " PREV_PAGE " " BYTES " " LENGTH { " " MEM_ADDRESS " " ASCII " " DATA_LENGTH { " " DATA_VALUE }
- Description
- An event containing the contents of memory.
Arguments
- BITMAP specifies the processes that generated this event.
- ADDRESS is the starting address of the memory data.
- NEXT_ROW is the address of the next row in the table.
- PREV_ROW is the address of the previous row in the table.
- NEXT_PAGE is the address of the next page in the table.
- PREV_PAGE is the address of the previous page in the table.
- BYTES is the total number of bytes (rows * cols * word-size).
- LENGTH is the number of memory addresses returned.
- MEM_ADDRESS is the start address of the memory.
- ASCII is an ASCII representation of the data.
- DATA_LENGTH is the number of data values.
- DATA_VALUE is data from a memory location.
DATA_TYPE
Message Format
DATA_TYPE_EVENT ⇒ "006B:TID:00000002" " " BITMAP " " VALUE
- Description
- An event containing the string representation of the type of a variable or expression.
Arguments
- BITMAP specifies the processes that generated this event.
- TYPE is the type.
ERROR
Message Format
ERROR_EVENT ⇒ "0070:TID:00000003" " " BITMAP ERROR_CODE_ATTRIBUTE " " ERROR_MSG_ATTRIBUTE
- Description
- Indicates that the command with corresponding TID has not been completed successfully. The reason for the failure are provided in the attributes.
Arguments
- BITMAP specifies the processes that generated this event.
- ERROR_CODE_ATTRIBUTE is an attribute containing the error code
- ERROR_MSG_ATTRIBUTE is an attribute containing a textual representation of the error
EXIT_NORMAL
Message Format
EXIT_NORMAL_EVENT ⇒ "0078:TID:00000003" " " BITMAP " " "0" " " EXIT_CODE
- Description
- An event indicating that a process has exited normally.
Arguments
- BITMAP specifies the processes that generated this event.
- EXIT_CODE is the exit code of the process.
EXIT_SIGNAL
Message Format
EXIT_SIGNAL_EVENT ⇒ "0078:TID:00000007" " " BITMAP " " "1" " " NAME " " STOP " " PRINT " " PASS " " DESCRIPTION
- Description
- An event indicating that a process has exited because it received a signal.
Arguments
- BITMAP specifies the processes that generated this event.
- NAME is the name of the signal that cause the process to exit.
- STOP can be used to indicate if this signal will cause the process to stop.
- PRINT can be used to indicate if this signal will cause a message to be printed.
- PASS can be used to indicate that this signal is passed to the target process.
- DESCRIPTION is a description of the signal.
OK
Message Format
OK_EVENT ⇒ "006F:TID:00000001" " " BITMAP
- Description
- Indicates that the command with corresponding TID has been completed successfully
Arguments
- BITMAP specifies the processes that generated this event.
SIGNALS
Message Format
SIGNALS_EVENT ⇒ "0077:TID:NUM_ARGS" " " BITMAP " " LENGTH { " " NAME " " STOP " " PRINT " " PASS " " DESCRIPTION }
- Description
- Provide information on how signals are handled by the backend.
Arguments
- BITMAP specifies the processes that generated this event.
- LENGTH is the number of signals in the event.
- NAME is the name of the signal.
- STOP indicates if this signal will cause the process to stop.
- PRINT indicates if this signal will cause a message to be printed.
- PASS indicates that this signal is passed to the target process.
- DESCRIPTION is a description of the signal.
STACK_DEPTH
Message Format
STACK_DEPTH_EVENT ⇒ "0074:TID:NUM_ARGS" " " BITMAP " " DEPTH
- Description
- Provides the number of frames in the (current) stack.
Arguments
- BITMAP specifies the processes that generated this event.
- DEPTH is the stack depth.
STACK_FRAMES
Message Format
STACK_FRAMES_EVENT ⇒ "0069:TID:NUM_ARGS" " " BITMAP " " LENGTH { " " FRAME_LEVEL " " FILE " " FUNCTION " " ADDRESS " " LINE }
- Description
- Provides a list of stack frames.
Arguments
- BITMAP specifies the processes that generated this event.
- LENGTH is the number of stack frames in the event.
- FRAME_LEVEL is the level of the thread's stack frame.
- FILE is the current file name.
- FUNCTION is the current function name.
- ADDRESS is the current address.
- LINE is the current line number.
SUSPEND_BREAKPOINT
Message Format
SUSPEND_BREAKPOINT_EVENT ⇒ "0071:TID:NUM_ARGS" " " BITMAP " " "0" " " BREAKPOINT_ID " " THREAD_ID " " DEPTH " " VAR_LENGTH { " " VAR_NAME }
- Description
- Indicates that the process has suspended as a result of hitting a breakpoint.
Arguments
- BITMAP specifies the processes that generated this event.
- BREAKPOINT_ID is the ID of the breakpoint that caused the event.
- THREAD_ID is the ID of the thread.
- DEPTH is the depth of the thread's stack frame.
- VAR_LENGTH is the number of variable names to follow.
- VAR_NAME is the name of a variable who's value has changed.
SUSPEND_INTERRUPT
Message Format
SUSPEND_INTERRUPT_EVENT ⇒ "0071:TID:NUM_ARGS" " " BITMAP " " "3" " " FRAME_LEVEL " " FILE " " FUNCTION " " ADDRESS " " LINE " " THREAD_ID " " DEPTH " " VAR_LENGTH { " " VAR_NAME }
- Description
- Indicates that the process has suspended as a result of a user interrupt.
Arguments
- BITMAP specifies the processes that generated this event.
- FRAME_LEVEL is the level of the thread's stack frame.
- FILE is the current file name.
- FUNCTION is the current function name.
- ADDRESS is the current address.
- LINE is the current line number.
- THREAD_ID is the ID of the thread.
- DEPTH is the depth of the thread's stack frame.
- VAR_LENGTH is the number of variable names to follow.
- VAR_NAME is the name of a variable who's value has changed.
SUSPEND_SIGNAL
Message Format
SUSPEND_SIGNAL_EVENT ⇒ "0071:TID:NUM_ARGS" " " BITMAP " " "1" " " NAME " " STOP " " PRINT " " PASS " " DESCRIPTION " " FRAME_LEVEL " " FILE " " FUNCTION " " ADDRESS " " LINE " " THREAD_ID " " DEPTH " " VAR_LENGTH { " " VAR_NAME }
- Description
- Indicates that the process has suspended as a result of receiving a signal.
Arguments
- BITMAP specifies the processes that generated this event.
- NAME is the name of the signal.
- STOP indicates if this signal will cause the process to stop.
- PRINT indicates if this signal will cause a message to be printed.
- PASS indicates that this signal is passed to the target process.
- DESCRIPTION is a description of the signal.
- FRAME_LEVEL is the level of the thread's stack frame.
- FILE is the current file name.
- FUNCTION is the current function name.
- ADDRESS is the current address.
- LINE is the current line number.
- THREAD_ID is the ID of the thread.
- DEPTH is the depth of the thread's stack frame.
- VAR_LENGTH is the number of variable names to follow.
- VAR_NAME is the name of a variable who's value has changed.
SUSPEND_STEP
Message Format
SUSPEND_STEP_EVENT ⇒ "0071:TID:NUM_ARGS" " " BITMAP " " "2" " " FRAME_LEVEL " " FILE " " FUNCTION " " ADDRESS " " LINE " " THREAD_ID " " DEPTH " " VAR_LENGTH { " " VAR_NAME }
- Description
- Indicates that the process has suspended as a result of a completing a single step.
Arguments
- BITMAP specifies the processes that generated this event.
- FRAME_LEVEL is the level of the thread's stack frame.
- FILE is the current file name.
- FUNCTION is the current function name.
- ADDRESS is the current address.
- LINE is the current line number.
- THREAD_ID is the ID of the thread.
- DEPTH is the depth of the thread's stack frame.
- VAR_LENGTH is the number of variable names to follow.
- VAR_NAME is the name of a variable who's value has changed.
THREAD_INFO
Message Format
THREAD_INFO_EVENT ⇒ "0072:TID:NUM_ARGS" " " BITMAP " " CURR_THREAD_ID " " NUM_THREADS { " " THREAD_ID }
- Description
- Provides a list of the threads in the current process.
Arguments
- BITMAP specifies the processes that generated this event.
- CURR_THREAD_ID is the ID of the current thread.
- NUM_THREADS is the number of threads in the list.
- THREAD_ID is the ID of each thread.
THREAD_SELECT
Message Format
THREAD_SELECT_EVENT ⇒ "0073:TID:NUM_ARGS" " " BITMAP " " THREAD_ID " " FRAME_LEVEL " " FILE " " FUNCTION " " ADDRESS " " LINE
- Description
- Information about a selected thread.
Arguments
- BITMAP specifies the processes that generated this event.
- THREAD_ID is the ID of the thread.
- FRAME_LEVEL is the level of the thread's stack frame.
- FILE is the current file name.
- FUNCTION is the current function name.
- ADDRESS is the current address.
- LINE is the current line number.
VARIABLES
Message Format
VARIABLES_EVENT ⇒ "006C:TID:NUM_ARGS" " " BITMAP " " VAR_LENGTH { " " VAR_NAME }
- Description
- Indicates that the process has suspended as a result of a completing a single step.
Arguments
- BITMAP specifies the processes that generated this event.
- VAR_LENGTH is the number of variable names to follow.
- VAR_NAME is the name of a variable.