A special interface allows you to use GNU Emacs to view (and edit) the source files for the program you are debugging with GDB. 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 a GDB process as a subprocess of Emacs, with input and output through a newly created Emacs buffer. Using this GDB process is just like using GDB normally except for two things: * All "terminal" input and output goes through the Emacs buffer. This applies both to GDB 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's Shell mode are available for this purpose. * GDB displays source code through Emacs. Each time GDB displays a stack frame, Emacs automatically finds the source file for that frame and puts an arrow (`=>') at the left margin of the current line. Explicit GDB `list' or search commands still produce output as usual, but you probably will have no reason to use them. In the GDB I/O buffer, you can use these special Emacs commands: `M-s' Execute to another source line, like the GDB `step' command. `M-n' Execute to next source line in this function, skipping all function calls, like the GDB `next' command. `M-i' Execute one instruction, like the GDB `stepi' command. `M-u' Move up one stack frame (and display that framés source file in Emacs), like the GDB `up' command. `M-d' Move down one stack frame (and display that framés source file in Emacs), like the GDB `down' command. (This means that you cannot delete words in the usual fashion in the GDB buffer; I am guessing you won't often want to do that.) `C-c C-f' Execute until exit from the selected stack frame, like the GDB `finish' command. In any source file, the Emacs command `C-x SPC' (`gdb-break') tells GDB to set a breakpoint on the source line point is on. 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 GDB communicates with Emacs in terms of line numbers. If you add or delete lines from the text, the line numbers that GDB knows will cease to correspond properly to the code.