codeblocks应用之debug

一个偶然的机会,我发现了codeblocks这款IDE,因为它主要用于开发c/c++,所以没有visual studio那么臃肿,感觉比较快捷,好用。但是其资料多为英文,本着利人利己的初衷,我决定挑选一些开发中必须使用的功能,将官方文档译为中文,以便查阅。本篇主要介绍此IDE的debug应用。本文基于的环境为windowsxp + codeblocks10.05。

 1.   经常使用visual studio编译器的可能不怎么关注编译参数,而codeblocks使用的是gnu的gcc编译器,所以如果希望生成可调试的程序,需要加入命令参数-g,这个选项说明生成的可执行文件中含有调试标记(比如源文件中的某行代码对应了哪几条汇编指令),同时要确保一定不能选中-s选项,这个选项用来清除可执行文件中所有的调试标记。具体操作如下:

菜单中 Project => Build Options

codeblocks应用之debug

2.    既然是debug,就需要在调试中对变量的值进行观察,这时需要打开IDE的watch窗口,打开方式如下:

菜单中debug=> Debugging windows=>watches

如图:

codeblocks应用之debug

当以debug方式运行程序时候会出现下面的窗口:

codeblocks应用之debug

注意1:红色框圈出的两个选项可以讲当前的watch列表保存起来,也可以重新将已保存的watch列表重新加载进来。

注意2:在进行debug时,在“call stack”调试窗口中(调出的方式同调出watch窗口)双击一个栈帧(frame),但是在watch窗口中相对应的信息不会更新,如果需要观察特定栈帧的相应信息,需要在”call stack”窗口中在需要观察的栈帧那一行上右击,然后选择“Switch to this frame”。操作如下图:

codeblocks应用之debug

3.    设置断点,调试程序需要设置断点,然后在watch窗口中进行观察变量的变化。设置断点是很重要的一环

设置断点的方式:

(1)将鼠标定位于需要设置断点的那一行,然后点击菜单中的 Debug => Toggle Breakpoint

(2)在需要加入断点的那一行中右击,然后选择Toggle Breakpoint或者按F5快捷键

这样就可以开始调试运行了

4.    点击菜单中的Debug=>start或者按F8

运行断点处停止,如果想观察某个变量,先要拖动鼠标选中这个变量,然后右击,就会有有watch+变量名这一菜单项,单击它就可以在watch窗口中加入此变量了

如图:

codeblocks应用之debug


注意:

如果使用的是codeblocks8.02版本,其中使用的编译器和调试器版本为 MinGW 和 gdb 6.7,则如果在c++构造函数中设置断点,调试器将不能工作,一下是一些小技巧。

设置在构造函数和析构函数中的断点在GDB 6.7以及更低的版本中是不能工作的,但是如果在构造函数开始有成员函数的调用,可以将断点设在成员函数中,然后调用完成员函数就可以通过next step(F7)继续观察构造函数调用。例如:

codeblocks应用之debug

需要观察构造函数MyClass调用,可以先设置一个成员函数DebugCtorDtor,讲断点设在22行,然后开始debug,程序会停在断点处,按F7,程序执行13行,就可以查看构造函数的调用情况了。