Debug with Code::Block

6 comments:
Làm cái ass, kiếm cách debug bằng code::block ra thằng này, mọi người ai quan tâm thì tham khảo :-D

Contents

  • 1 Build debug version of your project
  • 2 Add Watches
  • 3 Set Breakpoints
  • 4 Notes on Setting Breakpoints
    • 4.1 Update to the newest version of mingw
    • 4.2 Limits on the early version of mingw

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

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.

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.

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:

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

Source : here

Đi thi OpenSource

8 comments:
Đã một tuần từ khi bước chân xuống Nha Trang - thành phố biển . Cảm nhận lần đầu là "dễ chịu", bớt đi cái ồn ào náo nhiệt của Sài Gòn . Đi cùng đoàn BK tham gia Olympic và acm/icpc , thấy mấy anh kia luyện mà "ghê" :-D . Mình thì long bong, 2 nhóm opensource tách ra từ ns, anh em cả nên ôn luyện nó cũng dễ dàng (nói ôn luyện chứ có ôn đek gì đâu :">) .

Tới buổi thi, in một balo tài liệu sách vào, tới cổng mới té ngữa ra là ban giám khảo cho mang usb, làm mình phải cật lực chạy về phòng chép tài liệu.

Vào thi mới thấy nhiều cái thiếu của mình, phần trắc nghiệm và python thì okie hết, tuy nhiên các phần của các bộ thư viện thì long bong. Một phần là tưởng như đề năm trước, ra trắc nghiệm và ko code nên ko chú trọng lắm, giờ thi nó cho toàn code nên *_* , một phần cũng chủ quan, ôn sơ sài quá. Dẫn đến kết quả thật ê chề.

Bữa nay - 9/10, tổng kết và trao giải, ai cũng thất vọng, hjc . ĐH CNTT giật 1 2, đội mình (3 thèn 08 - 3 thèn nhỏ nhất trong đám opensource thi năm nay) được giải khuyến khích - cũng tạm an ủi lấy tinh thần sang năm thi tiếp.

À, quên 1 thứ nữa là hôm nay là sn mình nữa chứ, thiệp chúc mừng từ các site mình tham gia nó gửi tới còn nhiều hơn cả mấy tin chúc mừng của mấy đứa bạn (bùn), nhưng cũng vui vì còn người nhớ tới sn của mình *_* . Không giống như năm ngoái chính mình lại quên sn của mình , hjc.