Debugging with Code::Blocks

From Code::Blocks
Revision as of 12:14, 26 October 2006 by Pecan (talk | contribs)
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

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 notice that for other compilers than GCC this 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:

 MyClass::MyClass()
 {
   DebugCtorDtor();
   is_initialised = true;
 }
 MyClass::~MyClass()
 {
   DebugCtorDtor();
   is_initialised = false;
 }
 MyClass::DebugCtorDtor()
 {
   int i = 0; // Dummy
 }

...and place a breakpoint in "DebugCtorDtor" at the line "int i = 0; // Dummy". The debugger will break at that line. If you go step-wise then (Menu Debug -> Next Line; or alternatively F7) you'll reach the code in the contructor/destructor (is_initialised = true/false).

Last edited: MortenMacFly 02:52, 26 October 2006 (EDT)