Go to the previous, next section.
A special interface allows you to use GNU Emacs to view (and edit) the source files for the program you are debugging with _GDBN__.
To use this interface, use the command M-x gdb in Emacs. Give the executable file you want to debug as an argument. This command starts _GDBN__ as a subprocess of Emacs, with input and output through a newly created Emacs buffer.
Using _GDBN__ under Emacs is just like using _GDBN__ normally except for two things:
This applies both to _GDBN__ commands and their output, and to the input and output done by the program you are debugging.
This is useful because it means that you can copy the text of previous commands and input them again; you can even use parts of the output in this way.
All the facilities of Emacs' Shell mode are available for interacting with your program. In particular, you can send signals the usual way--for example, C-c C-c for an interrupt, C-c C-z for a stop.
Each time _GDBN__ displays a stack frame, Emacs automatically finds the source file for that frame and puts an arrow (_0__`=>'_1__) at the left margin of the current line. Emacs uses a separate buffer for source display, and splits the window to show both your _GDBN__ session and the source.
Explicit _GDBN__ list
or search commands still produce output as
usual, but you probably will have no reason to use them.
Warning: If the directory where your program resides is not your current directory, it can be easy to confuse Emacs about the location of the source files, in which case the auxiliary display buffer will not appear to show your source. _GDBN__ can find programs by searching your environment'sPATH
variable, so the _GDBN__ input and output session will proceed normally; but Emacs does not get enough information back from _GDBN__ to locate the source files in this situation. To avoid this problem, either start _GDBN__ mode from the directory where your program resides, or specify a full path name when prompted for the M-x gdb argument.A similar confusion can result if you use the _GDBN__
file
command to switch to debugging a program in some other location, from an existing _GDBN__ buffer in Emacs.
By default, M-x gdb calls the program called `gdb'. If
you need to call _GDBN__ by a different name (for example, if you keep
several configurations around, with different names) you can set the
Emacs variable gdb-command-name
; for example,
(setq gdb-command-name "mygdb")
(preceded by ESC ESC, or typed in the *scratch*
buffer, or
in your `.emacs' file) will make Emacs call the program named
"mygdb
" instead.
In the _GDBN__ I/O buffer, you can use these special Emacs commands in addition to the standard Shell mode commands:
step
command; also
update the display window to show the current file and location.
next
command. Then update the display window
to show the current file and location.
stepi
command; update
display window accordingly.
nexti
command; update
display window accordingly.
finish
command.
continue
command.
Warning: In Emacs v19, this command is C-c C-p.
up
command.
Warning: In Emacs v19, this command is C-c C-u.
down
command.
Warning: In Emacs v19, this command is C-c C-d.
disassemble
by typing C-x &.
You can customize this further on the fly by defining elements of the list
gdb-print-command
; once it is defined, you can format or
otherwise process numbers picked up by C-x & before they are
inserted. A numeric argument to C-x & will both indicate that you
wish special formatting, and act as an index to pick an element of the
list. If the list element is a string, the number to be inserted is
formatted using the Emacs function format
; otherwise the number
is passed as an argument to the corresponding list element.
In any source file, the Emacs command C-x SPC (gdb-break
)
tells _GDBN__ to set a breakpoint on the source line point is on.
If you accidentally delete the source-display buffer, an easy way to get
it back is to type the command f
in the _GDBN__ buffer, to
request a frame display; when you run under Emacs, this will recreate
the source buffer if necessary to show you the context of the current
frame.
The source files displayed in Emacs are in ordinary Emacs buffers which are visiting the source files in the usual way. You can edit the files with these buffers if you wish; but keep in mind that _GDBN__ communicates with Emacs in terms of line numbers. If you add or delete lines from the text, the line numbers that _GDBN__ knows will cease to correspond properly to the code.
_fi__(!_DOSHOST__)
_if__(_LUCID__)
Go to the previous, next section.