Windows ® 2000 Debugging André Vachon Development Lead Windows Debuggers Microsoft Corporation.
Debuggers
description
Transcript of Debuggers
![Page 1: Debuggers](https://reader031.fdocuments.in/reader031/viewer/2022013101/56813a12550346895da1ecd6/html5/thumbnails/1.jpg)
Debuggers
![Page 2: Debuggers](https://reader031.fdocuments.in/reader031/viewer/2022013101/56813a12550346895da1ecd6/html5/thumbnails/2.jpg)
Using a debugger A primitive way of debugging is to
insert print statements.
![Page 3: Debuggers](https://reader031.fdocuments.in/reader031/viewer/2022013101/56813a12550346895da1ecd6/html5/thumbnails/3.jpg)
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!
![Page 4: Debuggers](https://reader031.fdocuments.in/reader031/viewer/2022013101/56813a12550346895da1ecd6/html5/thumbnails/4.jpg)
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!
![Page 5: Debuggers](https://reader031.fdocuments.in/reader031/viewer/2022013101/56813a12550346895da1ecd6/html5/thumbnails/5.jpg)
JGRASP
![Page 6: Debuggers](https://reader031.fdocuments.in/reader031/viewer/2022013101/56813a12550346895da1ecd6/html5/thumbnails/6.jpg)
Setting a breakpoint (jGRASP)
![Page 7: Debuggers](https://reader031.fdocuments.in/reader031/viewer/2022013101/56813a12550346895da1ecd6/html5/thumbnails/7.jpg)
Breakpoint is now set (jGRASP)
![Page 8: Debuggers](https://reader031.fdocuments.in/reader031/viewer/2022013101/56813a12550346895da1ecd6/html5/thumbnails/8.jpg)
Start the debugger (jGRASP)
Build -> Debug The program then runs and stops at our
first breakpoint.
![Page 9: Debuggers](https://reader031.fdocuments.in/reader031/viewer/2022013101/56813a12550346895da1ecd6/html5/thumbnails/9.jpg)
step over
step in
step out
variables (r-click to change value)
next line to be executed
end debugging
jGRASP
![Page 10: Debuggers](https://reader031.fdocuments.in/reader031/viewer/2022013101/56813a12550346895da1ecd6/html5/thumbnails/10.jpg)
VC++
![Page 11: Debuggers](https://reader031.fdocuments.in/reader031/viewer/2022013101/56813a12550346895da1ecd6/html5/thumbnails/11.jpg)
Setting a breakpoint (VC++)
![Page 12: Debuggers](https://reader031.fdocuments.in/reader031/viewer/2022013101/56813a12550346895da1ecd6/html5/thumbnails/12.jpg)
Starting the debugger (VC++)
![Page 13: Debuggers](https://reader031.fdocuments.in/reader031/viewer/2022013101/56813a12550346895da1ecd6/html5/thumbnails/13.jpg)
Watch variables (VC++)
![Page 14: Debuggers](https://reader031.fdocuments.in/reader031/viewer/2022013101/56813a12550346895da1ecd6/html5/thumbnails/14.jpg)
VC++ debugging options
![Page 15: Debuggers](https://reader031.fdocuments.in/reader031/viewer/2022013101/56813a12550346895da1ecd6/html5/thumbnails/15.jpg)
GDB
![Page 16: Debuggers](https://reader031.fdocuments.in/reader031/viewer/2022013101/56813a12550346895da1ecd6/html5/thumbnails/16.jpg)
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)
![Page 17: Debuggers](https://reader031.fdocuments.in/reader031/viewer/2022013101/56813a12550346895da1ecd6/html5/thumbnails/17.jpg)
Setting a breakpoint (gdb) in main and start running
![Page 18: Debuggers](https://reader031.fdocuments.in/reader031/viewer/2022013101/56813a12550346895da1ecd6/html5/thumbnails/18.jpg)
Print and set (change) var
![Page 19: Debuggers](https://reader031.fdocuments.in/reader031/viewer/2022013101/56813a12550346895da1ecd6/html5/thumbnails/19.jpg)
List source code
![Page 20: Debuggers](https://reader031.fdocuments.in/reader031/viewer/2022013101/56813a12550346895da1ecd6/html5/thumbnails/20.jpg)
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