Difference between revisions of "Debugging with Code::Blocks"
MortenMacFly (talk | contribs) m |
(Add an image and divide the article to 4 sections) |
||
Line 1: | Line 1: | ||
[[Category: User Documentation]] | [[Category: User Documentation]] | ||
+ | =Build debug version of your project= | ||
Make sure that the project is compiled with the -g (debugging symbols) compiler option on, and the -s (strip symbols) option off. This ensures that the executable has debug symbols included. | Make sure that the project is compiled with the -g (debugging symbols) compiler option on, and the -s (strip symbols) option off. This ensures that the executable has debug symbols included. | ||
Line 10: | Line 11: | ||
[[Image:DbgProjBuildOpt.png|Set Project Build Options]] | [[Image:DbgProjBuildOpt.png|Set Project Build Options]] | ||
− | + | =Add Watches= | |
Open The Debugger Watches Window | Open The Debugger Watches Window | ||
[[Image:DbgWatchWindow.png|Open Watch Window]] | [[Image:DbgWatchWindow.png|Open Watch Window]] | ||
+ | The list of watches can be saved to a file and later re-loaded. To do so, right click in the list of watches and select "save watch file" (and "load watch file" to re-load them again). | ||
+ | |||
+ | [[Image:Save watch.png]] | ||
+ | =Set Breakpoints= | ||
Find the line containing the variable to be watched. Set a breakpoint in a position that will allow you to observe the variable value. | Find the line containing the variable to be watched. Set a breakpoint in a position that will allow you to observe the variable value. | ||
Menu => Debug => Toggle Breakpoint | Menu => Debug => Toggle Breakpoint | ||
+ | |||
[[Image:DbgSetWatchVar.png|Choose Watch Variable]] | [[Image:DbgSetWatchVar.png|Choose Watch Variable]] | ||
Run the debugger until the breakpoint is reached. Right click the variable to set a watch in the Watch Window. | Run the debugger until the breakpoint is reached. Right click the variable to set a watch in the Watch Window. | ||
− | + | =Notes on Setting Breakpoints= | |
Breakpoints may also be toggled with a left click in the left editor margin. | Breakpoints may also be toggled with a left click in the left editor margin. | ||
Line 32: | Line 38: | ||
...and place a breakpoint in "DebugCtorDtor" at the line "int i = 0;" . The debugger will break at that line. If you then step the debugger (Menu Debug => Next Line; or alternatively F7) you'll reach the code in the contructor/destructor ("is_initialised = true/false;"). | ...and place a breakpoint in "DebugCtorDtor" at the line "int i = 0;" . The debugger will break at that line. If you then step the debugger (Menu Debug => Next Line; or alternatively F7) you'll reach the code in the contructor/destructor ("is_initialised = true/false;"). | ||
− | |||
− |
Revision as of 06:36, 28 December 2008
Build debug version of your project
Make sure that the project is compiled with the -g (debugging symbols) compiler option on, and the -s (strip symbols) option off. This ensures that the executable has debug symbols included.
Compiler optimization switches should be turned off, stripping symbols (-s) must be turned off.
Keep in mind that you may have to re-build your project as up-to-date object files might not be re-compiled with -g otherwise. Please be aware that in compilers other than GCC, -g and/or -s might be a different switch (-s might not ba available at all).
Menu => Project => Build Options
Add Watches
Open The Debugger Watches Window
The list of watches can be saved to a file and later re-loaded. To do so, right click in the list of watches and select "save watch file" (and "load watch file" to re-load them again).
Set Breakpoints
Find the line containing the variable to be watched. Set a breakpoint in a position that will allow you to observe the variable value.
Menu => Debug => Toggle Breakpoint
Run the debugger until the breakpoint is reached. Right click the variable to set a watch in the Watch Window.
Notes on Setting Breakpoints
Breakpoints may also be toggled with a left click in the left editor margin.
Breakpoints do not work in constructors or destructors. They do, however, work in routines called from them. This is a GDB restriction, not a bug. So you could do something like:
...and place a breakpoint in "DebugCtorDtor" at the line "int i = 0;" . The debugger will break at that line. If you then step the debugger (Menu Debug => Next Line; or alternatively F7) you'll reach the code in the contructor/destructor ("is_initialised = true/false;").