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 Remote 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:
Name | 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 object | zero if condition is NULL, otherwise is
agent expression object
|
actions | variable | numactions number of tracepoint action object
|