32.6.2 Debugger Operation
When you run a debugger with GUD, the debugger uses an Emacs buffer
for its ordinary input and output. This is called the GUD buffer. The
debugger displays the source files of the program by visiting them in
Emacs buffers. An arrow (‘=>’) in one of these buffers indicates
the current execution line.1 Moving point in this
buffer does not move the arrow.
You can start editing these source files at any time in the buffers
that display them. The arrow is not part of the file's
text; it appears only on the screen. If you do modify a source file,
keep in mind that inserting or deleting lines will throw off the arrow's
positioning; GUD has no way of figuring out which line corresponded
before your changes to the line number in a debugger message. Also,
you'll typically have to recompile and restart the program for your
changes to be reflected in the debugger's tables.
If you wish, you can control your debugger process entirely through the
debugger buffer, which uses a variant of Shell mode. All the usual
commands for your debugger are available, and you can use the Shell mode
history commands to repeat them. See Shell Mode.
The Tooltip facility (see Tooltips) provides support for GUD.
You activate this feature by turning on the minor mode
gud-tooltip-mode
. Then you can display a variable's value in a
tooltip simply by pointing at it with the mouse. In graphical mode,
with a C program, you can also display the #define
directive
associated with an identifier when the program is not executing. This
operates in the GUD buffer and in source buffers with major modes in
the list gud-tooltip-modes
. If the variable
gud-tooltip-echo-area
is non-nil
then the variable's
value is displayed in the echo area.
With GDB in text command mode (see GDB Graphical Interface),
it is possible that use of GUD tooltips can cause a function to be
called with harmful side-effects. In this case, Emacs disables
them.