gdb: In-Process Agent
30 In-Process Agent
*******************
The traditional debugging model is conceptually low-speed, but works
fine, because most bugs can be reproduced in debugging-mode execution.
However, as multi-core or many-core processors are becoming mainstream,
and multi-threaded programs become more and more popular, there should
be more and more bugs that only manifest themselves at normal-mode
execution, for example, thread races, because debugger's interference
with the program's timing may conceal the bugs. On the other hand, in
some applications, it is not feasible for the debugger to interrupt the
program's execution long enough for the developer to learn anything
helpful about its behavior. If the program's correctness depends on its
real-time behavior, delays introduced by a debugger might cause the
program to fail, even when the code itself is correct. It is useful to
be able to observe the program's behavior without interrupting it.
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
(Agent Expressions) 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'
Causes the in-process agent to perform some operations on behalf of
the debugger. Just which operations requested by the user will be
done by the in-process agent depends on the its capabilities. For
example, if you request to evaluate breakpoint conditions in the
in-process agent, and the in-process agent has such capability as
well, then breakpoint conditions will be evaluated in the
in-process agent.
'set agent off'
Disables execution of debugging operations by the in-process agent.
All of the operations will be performed by GDB.
'show agent'
Display the current setting of execution of debugging operations by
the in-process agent.
Menu