===== gdb Quick Reference =====
==== What is gdb ====
According to [[ https://www.gnu.org/software/gdb/ | GNU ]],
GDB, the GNU Project debugger, allows you to see what is going on "inside" another program while it executes - or what another program was doing at the moment it crashed.
==== Compiling For gdb ====
gdb needs information that is not ordinarily provided by the compiler. So, if you want to use gdb you need to include the ''%%-g%%'' switch when compiling. For example:
g++ -c -g Driver.cpp
==== Starting gdb ====
To start gdb, simply enter the gdb command in a terminal window. It has one paramter, the name of the executable. For example:
gdb Driver
==== Basic gdb Commands ====
The following commands are listed in alphabetical order:
^Command^Purpose^
|//Enter//|Re-execute the previous gdb command|
|break //xx//|Set a breakpoint at line //xx// in the current file|
|break //functionname//|Set a breakpoint at the start of //functionname//|
|break //classname//:://functionname//|Set a breakpoint at the start of a method|
|break //filename//://xx//|Set a breakpoint at line //xx// in a specified file|
|continue|Resume running/executing the program|
|disable //xx//|Disable breakpoint number //xx//|
|enable //xx//|Enable breakpoint number //xx//|
|help|Display a list of gdb commands|
|help //command//|Get help on a specific command|
|info break|List all breakpoints|
|info source|Show the name of the current source file|
|info sources|List the name of all source files in use|
|list|List the next source lines|
|list //xx//|List source lines starting at line //xx//|
|list //xx//,//yy//|List sources lines from //xx// to //yy//|
|list //filename//://xx//|List source lines in the specified file starting at line //xx//|
|next|Execute the current statement and then stop|
|print //variable//|Print the value of a variable|
|quit|Quit gdb|
|run|Run/execute the program starting from the beginning|
|set //variable// = //value//|Assign a new value to a variable|
|step|Execute the current statement (entering a function if possible)|
==== A Sample Session ====
A small sample session of gdb (with an executable named ''%%Driver%%'') might look something like the following [where $ is the shell prompt and (gdb) is the gdb prompt]:
$ gdb Driver
(gdb) break 1
(gdb) run
(gdb) next
(gdb) print i
(gdb) next
(gdb) print i
(gdb) quit