Contents
|
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.
Breakpoints may also be toggled with a left click in the left editor margin.
Notes on Setting Breakpoints
Update to the newest version of mingw
From gdb 6.8 released on April 2008, it supports many features which does not exist in early versions. You can update by installing binaries from TDM-Mingw package.
Limits on the early version of mingw
If your are still using the mingw and gdb 6.7 from 8.02 setup files, setting breakpoints in the constructor can not work. Here are some tricks.
Breakpoints do not work in constructors or destructors in GDB 6.7 and earlier version. They do, however, work in routines called from them. This is an early 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;").
Source : here
Thanks mi nghe Tiến.
ReplyDeleteDù hem biết bao giờ ta mới đọc tới cái ni :D
Ta phải cố gắn gòi.
Ta khâm phục mi ghê
thì IDE chứ gì đâu mà khâm phục dữ hehe ^^ down về vọc đi http://downloads.sourceforge.net/codeblocks/codeblocks-8.02mingw-setup.exe
ReplyDelete:))
ReplyDeleteKhâm phục nhiều cái nữa ^^
bi giờ debug với gdb với xịn :-d
ReplyDeleteĐi mà đi debug cái ass bằng gdb đi, cho lòi mắt ra ku ạ ;)) . Nhưng vả lại, dù sao thì mục đích của việc sử dụng một công cụ là để giải quyết vấn đề thôi.Xịn hay không không quan trọng, hiểu vấn đề là đạt rồi.
ReplyDeleteđể qua môn hệ điều hành dùng bộ ba (vi + gdb + gcc) làm ;))
ReplyDelete