codeblocks设置断点和单步调试方法:
主要是建一个project;
而且project要放在英文目录下面;
程序项目的目录里不能有中文;
new project->console application->选择c or c++ ->filename->有个debug要钩上->写程序;
编译后使光标定位在程序某处,按F4使程序运行到光标处,再按F7就可以单步调试,按Shift+F7单步进入。
1,先在main函数开始的地方,设置一个断点。这样就可以查看整个程序的执行过程了。
(1)将光标移到 double base_val 这一行
(2)选择 调试 | 设置断点 (Debug | Toggle Breakpoint)或者按下F5。这会在该代码行旁边的侧边栏中设置一个小红点,表明这一行有一个断点:
(3)可以使用设置断点命令或者单击小红点用来设置或取消设置该断点。
(4)开始运行程序。选择调试 | 开始(Debug | Start)或者按下F8。
这样程序将正常执行,直到遇到断点。
现在我们应该看到了打开的调试器,它看起来应该是这样的:
首先要注意的是小圆点下面的三角形,它表示接下来要执行的代码行。它跟小红点之间相隔若干行。
它之所以没有紧挨着小红点,是因为变量的声明不产生任何的机器代码,因此,尽管断点看起来是在15行,但实际上它在第18行。
(5)这时应该还有一个监视(Watches)窗口打开了,如下图:
我已经展开了监视窗口的两个子项:局部变量(Local variables)和函数参数(Function Arguments)。
监视窗口会显示出所有当前可用的变量,包括局部变量和函数参数,以及这些变量的值。
注意:这里看起来像乱码的原因是因为我们还没有对它们进行初始化,这也是接下来的几行程序所要做的事情。
(6)为了执行接下来的几行代码,我们需要告诉调试器向下执行下一行(F7)。
所谓向下执行一行,就会执行当前的代码行,也就是三角形所标识的那一行。
一旦走到下一行,程序就会执行cout语句,输出一条信息到屏幕中,要求你输入一个值。
如果你尝试输入一个值但没有任何效果——因为程序还在调试器的控制之下。
再次按下F7后,程序会等待用户输入,因为这时候cin函数还未返回——cin函数需要在返回前得到用户的输入。
重复这一过程,分别输入0.1给利率,输入1给年数。
现在,断点到达了这一行代码:
再次确认输入是否正确。我们可以通过监视窗口来检查局部变量的值:
注意:rate的值不是0.1,是因为0.10000...1中最末尾的1只是浮点数的一种怪异的表达方式(浮点数并不是精确的),它实在太小了,对大多数程序来说不会造成很大影响。
(7)现在我们确定一切都没问题,来调查一下computerInterest函数中会发生什么,单步执行(Step into)。
单步执行会进入当前行的函数里面去执行,而不像下一行命令,只是执行函数然后显示给你最终的结果。
现在我们就单步进入computerInterest函数之中:
(8)从结果中我们可以看出函数的参数部分一切正常,但变量i 和 final_multiplier 值不对劲。
为此,使用下一行命令(F7),执行循环语句,由于它与一些初始化 *** 作相关联,我们看看会发生什么。
(9)从中我们可以看出,final_multiplier没有正确初始化。而且,接下来要执行的语句将要用到final_multiplier:
final_multiplier *= (1 + rate)
这条语句的意思是,将final_multiplier乘以(1+rate),再把结果重新赋值给final_multiplier。但是我们看到final_multiplier并没有被初始化,因此这个乘法的结果也将会是一个莫名其妙的值。
codeblock主要支持gcc的gdb调试器。
你如果在win下用,
1、需要装mingw的gdb件,
2、并且使用mingw/gcc作为编译器
3、使用‘debug’作为构建方式
就可以使用debug菜单的那些调试选项了,也包括断点。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)