目录
一、Debug和Release
1.Debug
调试版本,编译器不优化,内存占用大
2.Relase
发布版本,编译器将代码大小和运行速度优化至最佳,内存占用小
二、必备快捷键
1.F9:创建和取消断点
断点的作用是可以在程序的任意位置设置暂停点,使程序执行到想要的位置暂停执行,然后通过监视、逐过程或逐语句观察代码执行细节
2.F5:启动调试(逐断点)
第一次按F5,启动调试并跳到第一个断点。之后每按一次F5,则跳到下一个断点
注意:按F5若没有断点,则直接跳到return结尾
3.F10:逐过程
第一次按F10,启动调试并跳到main函数的下一行。之后每按一次F10,则跳到下一行
4.F11:逐语句
第一次按F11,启动调试并跳到main函数的下一条语句。之后每按一次F11,则跳到下一条语句
注意:若想进入函数内部查看具体细节,只能用F11(逐语句),不能用F10(逐过程)
5.CTRL+F5:开始执行不调试
便于快速执行代码,省去用鼠标点击的时间
更多详细快捷键:VS中常用的快捷键_vs快捷键-CSDN博客
三、监视和内存
1.监视
在调试环境下,【调试】-->【窗口】-->【监视】--> 任意监视窗口
注:一定要开始调试才会有监视窗口!
2.内存
在调试环境下,【调试】-->【窗口】-->【内存】--> 任意内存窗口
除了监视和内存,还有反汇编和寄存器,可以自行探索
四、常见错误类型
1.编译型错误
一般为语法错误,编译器会直接标出来,最好改的bug
2.链接型错误
一般为函数未定义,头文件未包含,引用的库不存在等,点击错误信息可以定位到问题所在
3.运行时错误
这种错误千变万化,且编译器一般不会报错,需要通过调试定位解决
五、调试举例
下面代码在vs2022,x86,Debug下运行
#include <stdio.h>
int main()
{
int i = 0;
int arr[10] = { 0 };
for (i = 0; i <= 12; i++)
{
arr[i] = 0;
printf("你好中国\n");
}
return 0;
}
运行结果:死循环打印“你好中国”
1.打断点并按F5开始调试
2.一步一步按F10调试,添加监视arr,i和内存arr
3.观察到每次i被修改时,0x00ADFE18地址处的数据被同步修改
4.最后得出结论,i与arr[12]的内存地址相同,修改arr[12]的值会使i的值同步改变,使i永远无法大于12,造成死循环
最后,感谢大家观看!