Debuggers
description
Transcript of Debuggers
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.
step over
step in
step out
variables (r-click to change value)
next line to be executed
end debugging
jGRASP
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 mainset 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