开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第5天,点击查看活动详情
实用的调试技巧
我们在初入学习编码时,由于对语法的不熟悉,可能会在代码的字里行间出现语法的错误,导致无法运行,还有就是代码没有报错,但是运行的结果与我们想要的结果不同,这些各种结果导致的代码程序出现问题,就是我们常说的bug。
什么是调试
我们常说,在编程圈,所有发生的事情都一定有迹可循,如果没有什么错误就不需要掩盖什么,一旦掩盖,那就必然会有迹象,一名优秀的程序员是一名出色的侦探,每一次调试都是尝试破案的过程。
调试的基本步骤:
- 发现程序错误的地方
- 以隔离,消除的方式定位到错误
- 确定错误产生的原因,提出纠正错误的解决方法
- 对程序错误予以改正,重新测试
Debug和Release的介绍
Debug通常称为调试版本,它是不做任何优化,便于程序员更好的调试程序
Release称为发布版本,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以便用户更好的使用。
所以我们说调试就是在Debug版本的环境中,寻找代码中的一些潜伏问题的一个过程。而在Release环境下中我们可以清晰的看到它优化后代码执行的的简洁,省略了一部分步骤,是不支持调试的!
#include<stdio.h>
int main()
{
int i = 0;
int arr[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9.,10 };
for (i = 0; i <= 12; i++)
{
arr[i] = 0;
printf("hehe\n");
}
return 0;
}
上面这段如果在Debug模式去编译,程序的结果是死循环
而如果是Release模式去编译,程序就不会死循环
这就是他们之间因为优化导致的区别
学会调试(windows环境)
调试环境准备
只有在Debug环境下,才能进行正常的调试
熟悉使用必要的快捷键
F5:
启动调试,经常用来跳到下一个断点处
F9
创建断点和取消断点的重要作用,可以在程序的任意位置设置断点; 这样就可以使得程序在想要的位置随意停止执行,继而一步步执行下去。
F10
逐过程,通常用来处理一个过程,一个过程可以是一次函数调用,或者是一条语句。
F11
逐语句,就是每次都执行一条语句,但是这个快捷键可以使我们的执行逻辑进入函数内部(这是最常用的)。
CTRL + F5
开始执行不调试,如果你想让程序直接运行起来而不调试就可以直接使用。
一般F5与F9配合使用,当我们写了比较长的代码,使用F10/F11逐步调试会很浪费时间;而使用F5和F9就会很方便,我们在想要让程序停下来的位置打上断点,在按F5就可以跳过前面的代码,使程序直接运行到断点处。 当再次按F5调试时会运行到逻辑上的下一处断点!
建议多动手,多去尝试调试来解决问题:
- 一定要熟练掌握调试技巧。
- 初学者可能80%的时间在写代码,20%的时间在调试;但是一个程序员可能20%的时间在写程序,但是80%的时间在调试。
- 这里所讲的是一些简单基本的调试;以后可能会出现很复杂调试场景:多线程程序的调试等,需要我们不断地去尝试解决。
- 多多使用快捷键,提升效率。
最后了解一下编程中常出现的错误:
- 编译型错误(语法错误)
- 直接看错误提示信息(双击),解决问题;或者凭借经验就可以搞定。相对来说简单。
- 链接型错误
- 看错误提示信息,主要在代码中找到错误信息中的标识符,然后定位问题所在;一般是标识符名不 存在或者拼写错误。
- 运行时错误
- 借助调试,逐步定位问题;最难搞 。