1、什么是bug?
BUG的英文释义是“虫子”,现在人们将再电脑系统或程序中,隐藏着的一些未被发现的缺陷或问题统称为bug(漏洞),人类历史上第一个程序BUG就是与虫子有关。
1937年,一个年轻的美国小伙找到IBM公司要了200万叨做计算机,第一台成品取名为“马克1号”,写代码的是一个小妮·雷斯·霍波。有一天,他在调试程序时出现故障,经过一阵子周折,发现有只飞蛾被烤糊在两个继电器触电的中间导致短路。于是把程序故障统称为“臭虫BUG”。从此这只虫子名垂千古,永远的保存在了华盛顿的美国国家历史博物馆中
2、调试是什么?
2.1、调试是什么
一般指的你写的代码,在Debug模式下编译以后,编译器在你的代码里插入了调试信息,你可以一步一步运行程序,查看中间结果,适用于你程序运行不对,需要检查中间过程确定问题源头的时候。
2.2、调试的基本步骤
- 发现程序错误的存在
- 以隔离、消除等方式对错误进行定位
- 确定错误产生的原因
- 提出纠正错误的解决办法
- 对程序错误予以改正,重新测试
2.3、Debug和Release的介绍
- Debug 通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序
- Release 称为发布版本,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以便用户很好地使用
- 可在编译器此处选择配置
3、Windows环境调试介绍
3.1、调试环境的准备
在环境中选择 debug 选项,才能使代码正常调试
3.2、学会快捷键
下面是调试常用的快捷键:
F5: 启动调试,经常用来直接跳到下一个断点处(若没有断点将运行整个程序)
F9:创建断点和取消断点。断点的重要作用,可以在程序的任意位置设置断点。这样就可以使得程序在想要的位置随意停止执行,继而一步步执行下去
F10:逐过程,通常用来处理一个过程,一个过程可以是一次函数调用,或者是一条语句
F11:逐语句,就是每次都执行一条语句,但是这个快捷键可以使执行逻辑进入函数内部,这是最常用的
Ctrl+ F5:开始执行不调试,如果你想让程序直接运行起来而不调试就可以直接使用
3.3、调试的时候查看程序当前信息
注意:以下所有内容都是在调试开始后才可操作的
3.3.1、查看临时变量的值
四个监视窗口都可以用,只需要在监视名称是输入合法的监视内容即可
3.3.2、查看内存信息
与监视窗口同理,四个口都可以用
在地址处输入你要查询的地址,在列处可以自己进行选择
选定后回车即可查看
3.3.3、查用调用堆栈
3.3.4、查看汇编信息
3.3.5、查看寄存器信息
4、调试的实例
1. #include <stdio.h> 2. int main() 3. { 4. int i = 0; 5. int arr[10] = { 1,2,3,4,5,6,7,8,9,10 }; 6. 7. for (i = 0; i <= 12; i++) 8. { 9. arr[i] = 0; 10. printf("hehe\n"); 11. } 12. return 0; 13. }
调试如下