Resources: Getting Started with GDB
A debugger is a program that allows you to monitor your program as it runs, inspecting the flow of the program and the values of variables.
To use gdb
, the GNU DeBugger on a C++ program, you must
recompile the program, telling the compiler to leave debugger
information in the program. This is accomplished by added
the -g
option to all g++
commands. If you are using
a Makefile
, edit the file to accomplish this task. Remove
any existing object files rm *.o
. Then build again make
.
To run the debugger on your program (I’ll assume your program
is called ppm_menu
for now.), launch like this:
gdb ./ppm_menu
You will now see the gdb)
prompt. GDB has opened your program,
but is not running it yet. Let’s assume you want to watch
your program’s flow of execution in a couple of functions named
imageMenu
and takeAction
. You can tell the debugger you
want it to pause execution anytime either of these functions
are called by setting break points. Like this:
break imageMenu
break takeAction
Now you can start running the program, in the debugger by using
the run
command:
run
The program will execute until one of the break points is reached,
or the program terminates. Let’s say that the program enters the
imageMenu
function and so GDB pauses execution. You can now
step through the statements in this function one at a time using
the next
command.
next
next
...
next
Every time you say next
, gdb will run the next line of code.
Along the way, you might want to examine the value of a variable.
You can see variable values using the print
command. For example,
if you wanted to see the value of a variable named output_image
,
you could say:
print output_image
If you are done stepping through the program one line at a time
and want to continue running the program at full speed, you
can use the continue
command. The program will continue until
another break point is reached, or the program terminates.
If you just want to stop the debugger, use the quit
command.
The debugger has many more features, but that should get you started.
Last Updated 03/23/2020