Next: Commands of GUD, Previous: Starting GUD, Up: Debuggers
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 cursor over a
variable, a function, or a macro (collectively called
identifiers) to show their values in tooltips
(see Tooltips). Alternatively, mark an identifier or an
expression by dragging the mouse over it, then leave the mouse in the
marked area to have the value of the expression displayed in a
tooltip. 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.