[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Therefore, traditional debugging model is too intrusive to reproduce some bugs. In order to reduce the interference with the program, we can reduce the number of operations performed by debugger. The In-Process Agent, a shared library, is running within the same process with inferior, and is able to perform some debugging operations itself. As a result, debugger is only involved when necessary, and performance of debugging can be improved accordingly. Note that interference with program can be reduced but can't be removed completely, because the in-process agent will still stop or slow down the program.
The in-process agent can interpret and execute Agent Expressions (see section F. The GDB Agent Expression Mechanism) during performing debugging operations. The agent expressions can be used for different purposes, such as collecting data in tracepoints, and condition evaluation in breakpoints.
You can control whether the in-process agent is used as an aid for debugging with the following commands:
set agent on
set agent off
show agent
30.1 In-Process Agent Protocol
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
The in-process agent is able to communicate with both GDB and GDBserver (see section 30. In-Process Agent). This section documents the protocol used for communications between GDB or GDBserver and the IPA. In general, GDB or GDBserver sends commands (see section 30.1.2 IPA Protocol Commands) and data to in-process agent, and then in-process agent replies back with the return result of the command, or some other information. The data sent to in-process agent is composed of primitive data types, such as 4-byte or 8-byte type, and composite types, which are called objects (see section 30.1.1 IPA Protocol Objects).
30.1.1 IPA Protocol Objects 30.1.2 IPA Protocol Commands
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
The commands sent to and results received from agent may contain some complex data types called objects.
The in-process agent is running on the same machine with GDB or GDBserver, so it doesn't have to handle as much differences between two ends as remote protocol (see section E. GDB Remote Serial Protocol) tries to handle. However, there are still some differences of two ends in two processes:
Here are the IPA Protocol Objects:
The following table describes important attributes of each IPA protocol object:
Size | Description | |
agent expression object | ||
length | 4 | length of bytes code |
byte code | length | contents of byte code |
tracepoint action for collecting memory | ||
'M' | 1 | type of tracepoint action |
addr | 8 | if basereg is `-1', addr is the | address of the lowest byte to collect, otherwise addr is the offset of basereg for memory collecting.
len | 8 | length of memory for collecting |
basereg | 4 | the register number containing the starting | memory address for collecting.
tracepoint action for collecting registers | ||
'R' | 1 | type of tracepoint action |
tracepoint action for collecting static trace data | ||
'L' | 1 | type of tracepoint action |
tracepoint action for expression evaluation | ||
'X' | 1 | type of tracepoint action |
agent expression | length of | agent expression object |
tracepoint object | ||
number | 4 | number of tracepoint |
address | 8 | address of tracepoint inserted on |
type | 4 | type of tracepoint |
enabled | 1 | enable or disable of tracepoint |
step_count | 8 | step |
pass_count | 8 | pass |
numactions | 4 | number of tracepoint actions |
hit count | 8 | hit count |
trace frame usage | 8 | trace frame usage |
compiled_cond | 8 | compiled condition |
orig_size | 8 | orig size |
condition | 4 if condition is NULL otherwise length of | agent expression objectzero if condition is NULL, otherwise is agent expression object |
actions | variable | numactions number of tracepoint action object |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
The spaces in each command are delimiters to ease reading this commands specification. They don't exist in real commands.
Replies:
Replies:
[ << ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |