重点: 文件一定不能含有中文,这是一个很大的问题,如果含有中文路径,执行到断点处和执行到光标出会出错
以下为codeblocks16.01的debug教程,例子为判断闰年还是平年的小程序,代码是:
#include <stdio.h>
int isLeapYear(int);
int main()
{
int year;
printf("请输入年份:");
scanf("%d",&year);
if(isLeapYear(year) == 1)
printf("%d年是闰年",year);
else
printf("%d年不是闰年",year);
return 0;
}
/**
*判断某一年份是否是闰年
*@param yaer:年份
*@return: 是否为闰年,是闰年返回非0,不是闰年返回0
**/
int isLeapYear(int year)
{
if(year % 100 == 0)///如果年份是整百
return year % 400 == 0;///判断是否能被400整除
return year % 4 == 0;///如果不是整百的直接判断是否能被4整除
}
下面开始debug,点击Debug,然后选Step Into,可以看得到,快捷键是Shift+F7,本人经验是:不能光记住快捷键,还要记住它在哪个按钮下,本人在2014年参加省赛的时候,当时比赛的机器按Shift+F7是没法进入debug模式的。
然后就是这个样子:
请注意这两个地方:
黄色的箭头代表了你当前走到了哪一行,小黑框并没有东西说明了输出函数并没执行,我们点击Next line按钮,如下图,
只有函数执行完了,才会出现效果,我们继续,点击Next line,发现:
本来在第9行的黄色箭头不见了,这个时候,编译器把执行权限交给了控制台,也就是我们的小黑框,在黄色箭头没有消失的时候,控制台是没法输入任何东西的,如果你的小黑框没法输入东西,请确认黄色箭头是否消失?接下来在小黑框输入2000作为测试数据,输入完后回车。
可以发现黄色箭头又出来了。这说明控制台(小黑框)把操作权限交回编译器。
接下来走到了调用函数的地方,有些时候我们需要进入到函数中,怎么办呢,点击Step into
你就会发现黄色箭头进入函数中了:
如果我们想在函数中查看某个变量的值,比如我们要监视year的值的变化(当前函数中无变化,这里只是讲解怎么监视变量),我们可以这样做:
点watches,就会出现:
这里已经给我们列出了function arguments(可以理解为:函数变量),如果没有自动列出,我们可以自己在Locals中自己添加
我添加了两个,一个是year,一个是不存在的变量month,输入完后按回车即可。效果:
如果想跳出当前函数,回到原来调用的位置,可以:
然后继续点Next line往下走。
通过单步调试过程中监视变量和判断流程走向(比如if语句是否按照自己想法走),就能很快定位bug的存在,注意:中途结束调试的话一定要点这个按钮,不能直接关小黑框:
小技巧:
(1)如果我们遇到一个大的循环,比如循环1w次,我们要点1w下走完这个循环?答案是不需要,把光标(就是编辑框中闪动的那个)移动到需要跳过的循环的下面,然后点:
编译器会自动运行到当前行,当然,如果中间有输入,是需要手动输入,然后再运行到当前行。这个按钮的功能是运行到当前行,当我们确定一部分代码没有问题的时候,可以通过它跳到我们想要的地方。
(2)你是否也遇到过下面的问题:
如果出现了这个问题,请:
然后你按照正常流程走,它会告诉有个地方出现了指针(课本上有介绍,现在这里知道就好)问题,看我的,scanf函数中忘记了&,问题被很快定位到:
---------------------
作者:BLF2
来源:CSDN
原文:https://blog.csdn.net/codeblf2/article/details/78183196
版权声明:本文为博主原创文章,转载请附上博文链接!
先了解一下基本的断点调试术语
1. 设置/取消断点:快捷键F5,或者点击“Debug”下拉框中的“Toggle breakpoint”
2. 开始调试/执行到下一断点(Debug/continue):快捷键F8,或者点击“Debug”下拉框中的“Start/Continue”
3. 单步调试(Next line):快捷键F7,或者点击“Debug”下拉框中的”Next line”
4. 跳入函数(Step into): 快捷键Shift+F7,或者点击“Debug”下拉框中的“Step into”
5. 跳出函数(Step out):快捷键Ctrl+F7,或者点击“Debug”下拉框中的“Step out”
6. 结束调试(Stop debugger):快捷键Shift+F8,或者点击“Debug”下拉框中的“Stop debugger”
下面结合代码进行解释:
1. 设置/取消断点
2. 开始调试,建议大家打开变量观察框(Watches),方便查看中间变量
打开变量观察框(Watches):
断点调试:
3. 执行到下一断点,并跳入函数
---------------------
作者:zqx951102
来源:CSDN
原文:https://blog.csdn.net/zqx951102/article/details/83628233
版权声明:本文为博主原创文章,转载请附上博文链接!