Difference between revisions of "Debugging with Code::Blocks"

From Code::Blocks
(Inform about ability to save list of watches)
m
Line 31: Line 31:
 
...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;").
  
Code::Blocks allows to save the list of watches to a file that can be re-load later. To do so, right click in the list of watches and select "save watch file" (and "load watch file" to re-laod them again).
+
Code::Blocks allows you to save the list of watches to a file that can be re-load later. To do so, right click in the list of watches and select "save watch file" (and "load watch file" to re-load them again).

Revision as of 13:33, 19 December 2007

Make sure that the project is compiled with the -g compiler option. This ensures that the executable has debug symbols included.

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 might be a different switch.

Menu => Project => Build Options

Set Project Build Options


Open The Debugger Watches Window

Open Watch Window


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 Choose Watch Variable

Run the debugger until the breakpoint is reached. Right click the variable to set a watch in the Watch Window.

Notes:

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:

Debugging ctor/dtor

...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;").

Code::Blocks allows you to save the list of watches to a file that can be re-load later. To do so, right click in the list of watches and select "save watch file" (and "load watch file" to re-load them again).