27.6.2 Debugger Operation
The GUD interaction buffer is an Emacs buffer which is used to
send text commands to a debugger subprocess, and record its output.
This is the basic interface for interacting with a debugger, used by
M-x gud-gdb
and other commands listed in
Starting GUD.
The M-x gdb
command extends this interface with additional
specialized buffers for controlling breakpoints, stack frames, and
other aspects of the debugger state (see GDB Graphical Interface).
The GUD interaction buffer uses a variant of Shell mode, so the Emacs commands defined by Shell mode are available (see Shell Mode). Completion is available for most debugger commands (see Completion), and you can use the usual Shell mode history commands to repeat them. See Commands of GUD, for special commands that can be used in the GUD interaction buffer.
As you debug a program, Emacs displays the relevant source files by
visiting them in Emacs buffers, with an arrow in the left fringe
indicating the current execution line. (On a text terminal, the arrow
appears as ‘ =>
’, overlaid on the first two text columns.) Moving
point in such a buffer does not move the arrow. You are free to edit
these source files, but note that inserting or deleting lines will
throw off the arrow’s positioning, as Emacs has no way to figure out
which edited source line corresponds to the line reported by the
debugger subprocess. To update this information, you typically have
to recompile and restart the program.
GUD Tooltip mode is a global minor mode that adds tooltip support to
GUD. To toggle this mode, type M-x gud-tooltip-mode
. It is
disabled by default. If enabled, you can move the mouse pointer over a
variable, a function, or a macro (collectively called
identifiers) to show their values in tooltips
(see Tooltips). If just placing the mouse pointer over an
expression doesn’t show the value of the expression you had in mind,
you can tell Emacs more explicitly what expression to evaluate by
dragging the mouse over the expression, then leaving the mouse inside
the marked area. The GUD Tooltip mode takes effect in the GUD
interaction buffer, and in all source buffers with major modes listed
in the variable gud-tooltip-modes
. If the variable
gud-tooltip-echo-area
is non- nil
, or if you turned off
the tooltip mode, values are shown in the echo area instead of a
tooltip.
When using GUD Tooltip mode with M-x gud-gdb
, displaying an
expression’s value in GDB can sometimes expand a macro, potentially
causing side effects in the debugged program. For that reason, using
tooltips in gud-gdb
is disabled. If you use the M-x gdb
interface, this problem does not occur, as there is special code to
avoid side-effects; furthermore, you can display macro definitions
associated with an identifier when the program is not executing.