1
调试是什么?
调试(英语:
Debugging / Debug
),又称除错,是发现和减少计算机程序或电子仪器设备中程序错误的一个过程。
2
调试的基本步骤
发现程序错误的存在
以隔离、消除等方式对错误进行定位
确定错误产生的原因
提出纠正错误的解决办法
对程序错误予以改正,重新测试
3 Debug
和
Release
的介绍。
Debug 通常称为调试版本
,它包含调试信息,并且不作任何优化,便于程序员调试程序。。
Release
称为发布版本
,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优
的,以便用户很好地使用。
最常使用的几个快捷键:
F5
启动调试,经常用来直接跳到下一个断点处。
F9
创建断点和取消断点
断点
的重要作用,可以在程序的任意位置设置断点。
这样就可以使得程序在想要的位置随意停止执行,继而一步步执行下去。
F10
逐过程,通常用来处理一个过程,一个过程可以是一次函数调用,或者是一条语句。
F11
逐语句,就是每次都执行一条语句,但是这个快捷键可以使我们的执行逻辑
进入函数内部
(这是最
长用的)。
CTRL + F5
开始执行不调试,如果你想让程序直接运行起来而不调试就可以直接使用。
查看临时变量的值
在调试开始之后,用于观察变量的值。
![](https://i-blog.csdnimg.cn/blog_migrate/dce535f7ae4b933f8bf4e04b6997c485.png)
查看内存信息
在调试开始之后,用于观察内存信息。
![](https://i-blog.csdnimg.cn/blog_migrate/3530d195645d302d8dcb97eb501bdc12.png)
查看调用堆栈
![](https://i-blog.csdnimg.cn/blog_migrate/dedaed6e7d8f2622fb156adc630859cd.png)
查看汇编信息
![](https://i-blog.csdnimg.cn/blog_migrate/debc7183153b37ae09e18bcd89184957.png)
![](https://i-blog.csdnimg.cn/blog_migrate/7dd2d353c8617defa022c9cf30062b87.png)
查看寄存器信息
可以查看当前运行环境的寄存器的
![](https://i-blog.csdnimg.cn/blog_migrate/93697168318bd8687d53b29d268a5879.png)
代码实例:
#include <stdio.h>
int
main
()
{
int
i
=
0
;
int
arr
[
10
]
=
{
0
};
for
(
i
=
0
;
i
<=
12
;
i
++
)
{
arr
[
i
]
=
0
;
printf
(
"hehe\n"
);
}
return
0
;
}
通过调试发现,arr【12】的值改变的时候,i的值也改变了,最后查看地址发现二者地址一致,vs2019的栈区的两个地址之间默认为两个距离,刚好在此题中被越界的arr【10】,arr【11】所占据。