文章目录
一、什么是bug
1947年,哈佛大学的计算机哈佛二代(Harvard Mark II)突然停止了运行。原来,哈佛二代当时还没有二极管和晶体管,它是一部继电器计算机,无数个喀哒作响的电磁开关在其中运作。当开关断开的时候会有电弧发出闪光,于是这只妖蛾子奋不顾身地飞了上去,用节肢动物的鲜血开辟了脊索动物的Debug史,从此名垂千古,永远地保存在了华盛顿的美国国家历史博物馆中,后来,Bug这个名词就沿用下来,表示电脑系统或程序中隐藏的错误、缺陷或问题。
Bug可以翻译为幺蛾子 —— 所以可以说你这代码有个幺蛾子
二、调试
1、什么是调试
调试(Debugging / Debug),又称排错,是发现和减少计算机程序或电子仪器设备中程序错误的一个过程
所有发生的事情一定都有迹可循,如果问心无愧,就不需要掩盖了,如果问心有愧,就必然需要掩盖,就一定会有破绽,破绽越多就越容易顺藤而上,这就是推理的途径。
一名优秀的程序猿一定是一名出色的侦探 —— 每一次调试都是一次破案的过程
拒绝迷信调试,学会科学调试:
2、调试的基本步骤
- 发现程序存在的错误
- 以隔离、消除等方式对错误进行定位
- 确定错误产生的原因
- 提出纠正错误的解决方法
- 对错误程序予以改下,重新测试
三、Debug和Release
1、Debug和Release是什么
这里主要说明的就是这2个版本:
Debug通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序。
Release称为发布版本,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以便用户更好的使用
2、Debug和Release的区别
1、所占空间
在此之前需要使用Debug和Release分别来运行代码,才能生成对应文件
从生成文件的大小来看:Debug的文件比Release的文件大
2、功能
Debug可以用于调试,而Release不能调试
3、优化
Debug不可以优化,而Release可以对代码进行优化
四、windowns环境调试技巧
1、调试环境准备
这里所调试的环境是:Visual Studio && Windows
将版本改为Debug调试版本。注:Linux开发环境调试工具是gdb
2、学会快捷键
学会快捷键会使我们的编码效率大大提高
以下这个窗口需要在调试后才能打开
当然这些还是要配合一些场景作一些了解:
1、当有一段有问题的代码,你已经排锁定了bug代码的区域,这时代码量又过长,想直接跳过非bug代码的区域时:断点+调试即可(F9+F5)
2、如果想进入到一个函数的内部可以逐语句执行(F11),或者不想进入函数的内部逐过程执行(F10)。
3、当我们的写的代码量大时且一个工程中有多个文件时。调试的时候难免会用到断点,且可能不止一个断点,这里可能就会造成紊乱。所以在调试,窗口里有个断点可以管理断点(CTRL + ALT + B)
4、在调试的过程中可以通过下面的局部变量窗口(CTRL + ALT + V + L)或者自动窗口(CTRL + ALT + V + A)来观察代码的步骤。
以上2个窗口都有一定的局限性,自由度不高。如果想自己设置要观察的数据时:在调试,窗口里打开监视窗口即可(CTRL + ALT + W , 1/2/3/4)
5、如果想要观察数据的内存的话,在调试,窗口里打开内存窗口即可(CTRL + ALT + M , 1/2/3/4)
6、如果想要看函数调用的逻辑,在调试,窗口,打开调用堆栈(这里的堆栈就是栈)(CTRL + ALT + C)
发现调用堆栈会模拟栈的执行逻辑
7、一段for循环代码,可能觉得在第50次循环有问题,这时按步就班的话就很low。可以使用断点,然后右击断点点击条件设置即可