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

From Code::Blocks
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:'''
+
=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;").
 
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).
 

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

Set Project Build Options

Add Watches

Open The Debugger Watches Window

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

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.

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 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:

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