经过几天的学习,对最基本的题目与解法进行了一定程度的了解,每天补题补得晕头转向,也没有时间总结,于是在结束时候对几天学习内容进行一个基本和大概的总结。估计会持续写好几天,逃~~~。
首先最基本的先掌握下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:%fn",A);
32 printf("B:%fn",B);
33 printf("C:%fn",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行语句,找到了问题所在。
##结束
单击“停止执行”,结束调试的全部过程
##总结
以上就是调试过程的基本全过程了,通过调试,可以比较方便快速的查找到问题的所在,通过监测对象的选取与观察,一旦某步出现与预期不符的结果,很清楚的了解到问题的所在。
原文链接: https://www.cnblogs.com/limojin/p/8399481.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/268704
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!