Dev C++调试基本用法
经过几天的学习,对最基本的题目与解法进行了一定程度的了解,每天补题补得晕头转向,也没有时间总结,于是在结束时候对几天学习内容进行一个基本和大概的总结。估计会持续写好几天,逃~~~。
首先最基本的先掌握下dev c++的基本调试方法。
##调试简介
首先,什么是调试?调试(也叫debug)是根据程序中数据的变化寻找错误的准确位置的方法。尤其是,编译器只能帮你找到不符合语法的错误,不能帮助你发现你的一些与你思路不符的行为,比如我经常在for循环读入数组的时候,把读入的循环i总是写成MAXN(数组的最大元素),导致一直把值保存在最后之后的位置。(有可能RE,反正数组内的元素始终都是初始化元素未改变)因此,明白调试的方法是解决这类错误的必然要求。
##例误
1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 #include<iostream> 5 #include<string> 6 #include<vector> 7 #include<stack> 8 #include<bitset> 9 #include<cstdlib> 10 #include<cmath> 11 #include<set> 12 #include<list> 13 #include<deque> 14 #include<map> 15 #include<queue> 16 using namespace std; 17 typedef long long ll; 18 const double PI = acos(-1.0); 19 const double eps = 1e-6; 20 21 22 int main(void){ 23 int a; float b; double c; 24 double A,B,C; 25 scanf("%d",&a); 26 scanf("%f",&b); 27 scanf("%f",&c); 28 A = a+b; 29 B = b+c; 30 C = c+a; 31 printf("A:%f\n",A); 32 printf("B:%f\n",B); 33 printf("C:%f\n",C); 34 return 0; 35 36 }
本代码中的错误出现在第27行,double类型的变量是不能用%f而应用%lf读入,当然输出还是%f。所以出现如下的结果。(输入:1 1.5 2.5)

理应当出现的结果应该是:
A:2.500000
B:4.000000
C:3.500000
所以出现问题,那么需要调试。
##起点与终点
我们设计的程序也许相当复杂,所以我们不可能每次都从头到尾对程序进行调试,所以首先要设置起点和终点。

初步首先判断认为错误出现在第25行至33行,点击后成功设置好起止断点。开始调试后,点击下一步,程序逐行运行。

##设置监控对象
然后,由于是中间值可能出现问题,我们想要观测中间值,于是我们要设置监控对象,观察监控对象的变化。
点击添加查看

输入要监测的变量的名字

之后显示在左侧窗体:

一边输入值,一边点击下一步:

输入b,执行后的结果如下图显示:

由此可见,b的读入不存在问题,继续进行下一步:

之后的结果,观察下:

哦,c仍然是未初始化的随机结果,证明在这步中,c未完成读入,仔细查看下27行语句,找到了问题所在。
##结束

单击“停止执行”,结束调试的全部过程
##总结
以上就是调试过程的基本全过程了,通过调试,可以比较方便快速的查找到问题的所在,通过监测对象的选取与观察,一旦某步出现与预期不符的结果,很清楚的了解到问题的所在。

浙公网安备 33010602011771号