GDB Tool
Linux includes the GNU debugger (gdb
), a command-line debugging tool for serial
programs. GDB is probably the best known symbolic debugger, and it has seen wide use among programmers. But don't be fooled by its commonality, or by its seemingly rudimentary interface; it is actually a very powerful debugging aid.
For parallel programming, GDB supports multithreaded applications natively and multiprocess applications only by attaching to each process with an individual debugging instance. Although it is not suitable for debugging subtle timing events in large parallel programs, GDB is simple enough to be effective at finding and correcting most program logic defects.
GDB can be set up to debug a running process in the following ways:
- To use GDB to launch a process and debug it:
gdb <executable>
- To attach GDB to a running process:
gdb <executable> <process ID>
Basic debugging under gdb
can be conducted after learning a relatively small
number of commands. You'll need the commands for controlling basic program execution like setting breakpoints and stepping through lines of code and functions. You'll also want to learn how to display variables and the call stack, and
reacting to fault conditions (such as segmentation faults). More detailed
commands are easy to learn using gdb
's online help system and of course, most of the above information can be gleaned from the
man page. In general, though, the most useful gdb
commands are as follows:
run
— execute the program from beginning.backtrace
— produce the backtrace from the last faultbreak <line number>
orbreak <function-name>
— break at the line number or at the use of the functionstep
— step to next line of code (step into function if possible)next
— step to next line of code (do not step into function)print <variable name>
— print the value stored by the variablecontinue
— run until next break point