Debuggers
Using a debugger A primitive way of debugging is to insert print statements.
Using a debugger A primitive way of debugging is to insert print statements. That’s OK but a debugger is much more powerful. It’s a program that watches and controls another program as it runs!
Using a debugger A primitive way of debugging is to insert print statements. That’s OK but a debugger is much more powerful. It’s a program that watches and controls another program as it runs! It allows us to execute our code one line at a time. It allows us to set breakpoints (stop points) in our code. We can even examine and change the contents of variables as our program runs!
jgrasp
Setting a breakpoint (jGRASP)
Breakpoint is now set (jGRASP)
Start the debugger (jGRASP) Build -> Debug The program then runs and stops at our first breakpoint.
jGRASP step over step in variables (r-click to change value) step out next line to be executed end debugging
VC++
Setting a breakpoint (VC++)
Starting the debugger (VC++)
Watch variables (VC++)
VC++ debugging options
gdb
Debugging with gdb (Unix/Linux) Direct compiler to include debugging information with –g (ex. g++ -g test.cpp) Run the debugger and indicate program to debug (ex. gdb ./a.out)
Setting a breakpoint (gdb) in main and start running
Print and set (change) var
List source code
Useful gdb commands b main set breakpoint in func main b 10 set breakpoint at line #10 cont continue del break delete all breakpoints l (ell) list source code lines l <func> (ell) list source code lines for <func> n next (like step over) p <var> print contents of variable quit end execution run start running program s step (like step into) set <var>=value change var