今天主要讲的是实用的调试技巧,你还在为了写代码时候出现bug而烦恼吗,让我们往下看,学会调试。据统计一位程序员有百分之八十的时间在调试找bug,百分之二十的时间在写代码,而初学者百分之八十的时间在写代码,百分之二十的时间在调试找bug。
1.什么是bug
第一次被发现的导致计算机错误的飞蛾,也就是第一个计算机错误。
2.我们是如何调试代码的
经过一次又一次的修改,修改正确全靠运气的佛系调试显然不适合我们,我们需要的是一个正确,方便,高效的解决方式,因此调试显得格外重要。所以想要学会调试的第一步,拒绝佛系调试。
3.调试的步骤
- 发现程序错误的存在
- 以隔离、消除等方式对错误进行定位
- 确定错误产生的原因
- 提出纠正错误的解决办法
- 对程序错误予以改正,重新测试
3.1调试的快捷键
F5:
启动调试,经常用来直接跳到下一个断点处(可以和F9配合使用,当设置断点后并且在调试模式也就是按F11或F10后点击F5就会到断点处)。
F9:
创建断点和取消断点
断点的重要作用,可以在程序的任意位置设置断点。
这样就可以使得程序在想要的位置随意停止执行,继而一步步执行下去。
(主要就是设置和取消断点,其中有一个条件断点)
比如在代码中我们想设置一个条件断点
#include<stdio.h> int main() { int i = 0; int sum = 0;//保存最终结果 int n = 0; int ret = 1;//保存n的阶乘 scanf("%d", &n); for (i = 1; i <= n; i++) { int j = 0; for (j = 1; j <= i; j++) { ret *= j; } sum += ret; } printf("%d\n", sum); return 0; }
我们再点击条件
最后输入条件例如i==5,设置完成后点击关闭,进入调试按F5直接运行到这里且i==5,这样的主要作用是如果我们需要调试时中间的数有问题,这就需要我们使用此操作,例如0到2000中我们想看1000时候的过程,难道我们还一次一次的按F11吗,可想而知,这样是行不通的,这时候我们掏出我们的断点加条件你会感觉
F10:
逐过程,通常用来处理一个过程,一个过程可以是一次函数调用,或者是一条语句。(这里就是当我们用到函数时,函数确定没有问题,不想进入函数的内部,可以按F10)
F11:
逐语句,就是每次都执行一条语句,但是这个快捷键可以使我们的执行逻辑进入函数内部(这是最常用的,一次一条代码,可以进入函数的内部,很适合我们查找问题)。
CTRL + F5 :
开始执行不调试,如果你想让程序直接运行起来而不调试就可以直接使用。(这里就是运行程序的快捷键)
3.2监视
单单学会这些快捷键还不足以让我们学会调试,监视是一个非常重要的功能,这需要我们在调试模式下进行,例如代码:
#include<stdio.h> int main() { int arr[5] = { 0,1,2,3,4 }; int i = 0; for (i = 0; i < 5; i++) { printf("%d", arr[i]); } return 0; }
我们进入调试,
点击调试———窗口————监视————再选择任意一个监视窗口,例如我们想监视数组arr【i】的值
我们需要再“添加要监视的项的位置输入arr[i]”,按f11就可以看到运行的结果
3.3反汇编
同样需要我们进入调试模式点击调试————窗口————反汇编。然后我们就可以看到
代码是如何在内存中的存储。
3.4内存
同样需要我们进入调试模式点击调试————窗口————内存。然后我们就可以看到
我们输入&sum其中0x00007FF6D87F1880就是sum的地址。
4.优秀的代码
- 1. 代码运行正常
- 2. bug很少
- 3. 效率高
- 4. 可读性高
- 5. 可维护性高
- 6. 注释清晰
- 7. 文档齐全
最后希望大家可以学到东西,一起加油,一起奔赴大厂!!!别忘了点赞,评论,收藏。