什么是调试?
调试又叫Debug,又称除错,是发现和减少计算机程序或电子仪器设备中程序错误的一个过程。
生活中所有发生的事情都一定有迹可循,如果问心无愧,就不需要掩盖也就没有迹象了,如果问心有愧疚,必然需要掩盖,那就一定会有迹象,迹象越多就容易顺藤而上,这就是推理的途径。顺着这条途径顺流而下就是犯罪,逆流而上就是真相。
我们找Bug跟侦破类似,也就是调试,如果我们写代码知道错了还继续顺着错误往下写,那越写越错;如果我们顺着错误往上找Bug那就会找出真相!
一名优秀的程序员是一名出色的侦探,每一次调试都是尝试破案的过程。
所以一个程序员如果不会自己调试,那就不是一个合格的程序员。
如果我们只会写Bug,不会改Bug,进了公司工作后,自己写的代码有Bug不会改,让别人改吗?一直让他人给自己改,那离被开除就不久了吧。
调试的基本步骤:
1.发现程序错误的存在。
2.定位错误。
3.找出错误的原因,并找到正确的解决方法。
4.对错误进行改正,重新测试。
调试中有两个功能一个是Debug、一个是Release:
Debug被称为调试版本:包含调试信息,不做任何优化,便于和程序员调试。
Release被称为发布版本:对程序进行各种优化,使程序在代码大小和运行速度上是最优的,便于用户使用。
那么有什么用呢?
先用Debug演示一下。
注意红色圈起来的Debug和左边箭头,按F10进行调试,然后按一下F10左边的箭头就会往下走一步。可以一步一步的调试。
再用Release演示一下:
与Debug不同的是,按F10往下走,走一遍 for 循环就结束走到 return 直接就出来了,不能调试。
下面是Debug生成的文件大小与Release生成的文件大小:
可以看到Release生成的exe文件确实小于Debug生成的exe文件,因为Release做了优化,在大小和运行速度上。
Debug:
Release:
写好代码要调试需要在Debug上进行调试;编译好的可执行程序给用户使用,用Release。
调试的快捷键(高频):
F5:开始调试,但是不能单独使用,一般是和 F9 搭配使用。
下面是F5单独使用,因为程序本来就有Bug,所以按F5之后就一直打印。
因为按F5之后它会一直执行,没有其它拦截的话不会停下来,直到结束。
F9:切换断点 / 设置(取消)断点。
鼠标放在左边(代码行号的左边)点一下或者 按F9 出现了红点,红点就是断点;如果再点一下或者按F9红点(断点)就会取消。
断点出现之后,鼠标放在红点上点击右键,可以进行断点设置;因为程序本身有bug,所以我给了条件 i==5,i == 5
就会停下来,不会像第一次按F5那样一直在打印,这个就是断点。
那有什么好处呢?
假如,自己写的代码有 1000 行了,前 700 行代码没问题,所以我们只需检查后 300 行代码就好了,我们把断点设置在 700
行处,按F5停下来,然后一步异步进行调试就好了。不然我们每次从第 1 行一步一步进行调试吗?那如果好几千行代码呢?浪费多少时间啊,还不如重新写一遍吧。
F10:逐过程。
按一下F10之后出现左边的箭头之后,按一次F10会往下走一步,但是有没有发现箭头没有进入 Add 函数内部,直接算了求和,打印了出来。这个就是逐过程。
F11:逐语句。
按一下F11之后出现左边的箭头之后,按一次F11会往下走一步,与F10不同的是,当箭头走到 Add 函数的时候,再按一次F11,会进入 Add
函数内部,走每一句。这个就是逐过程。
上面是常用的调试快捷键,还有一些快捷键可以再了解一些,我只把常用的做了一下示范。
调试的时候怎么查看程序信息?
我前面的文章也有介绍怎么查看监视、内存等等,可以再看一下前面的文章。
下面简单再介绍一下。
以上就是常用的调试的一些技巧。
作为一名程序员学会调试非常重要!