目录
前言
编辑
了解调试小知识
认识bug
调试(debug)
Debug和Release
调试快捷键
按F10会直接来到程序的入口
若用F9打上断点,则会直接跳到断点处
F10与F11的区别
条件断点
监视
内存
输入arr
输入&num
调试示例
调试对于学习编程来说至关重要。很多时候代码的思路没错,语法上也没错,但就是得不到预想的结果,这时候我们就得利用调试技巧,分析代码细节,进而找出代码中的bug~
以下是有关于vs的一些调试知识和技巧,带着大家结合示例学会调试!
创作不易,还望大家帮忙点点赞~
如有错误,感谢指出~
bug在编程中可以理解为程序漏洞
调试即找bug并修复bug的过程
调试可能是逐个过程的调试,也可能是隔离或屏蔽代码的方式。
Debug:调试版本,不做优化,方便程序员直接调试
Release:发布版本,会各种优化,不可调试
由于Release版本不包含调试信息,它较于Debug版本占的空间会更小
F9:创建断点和取消断点
条件断点:满⾜这个条件,才触发断点
F5:启动调试,经常⽤来直接跳到下⼀个断点处,⼀般是 和F9配合使⽤。
F10:逐过程,通常⽤来处理⼀个过程,⼀个过程可以是⼀次函数调⽤,或者是⼀条语句。
F11:逐语句,可进⼊函数内部。在函 数调⽤的地⽅,想进⼊函数观察细节,必须使⽤F11,如果使⽤F10,直接完成函数调⽤。
CTRL + F5:开始执⾏不调试,即让程序直接运⾏起来。
VS更多快捷键了解:http://blog.csdn.net/mrlisky/article/details/72622009
如下图按F10后直接运行了test函数,并没有进入函数内部。
如下图,按F11会进入test函数内部,可以观察函数内部细节。
如图,当我们想观察i=8时,对着断点右击鼠标,可以使用条件断点,直接到i=8的位置,否则就要一直重复按F5到i=8
按F10后开始调试,打开监视窗口,输入要监视的值
数据在内存中存储的是二进制形式,展现的是十六进制(更加简短)
在VS2022、X86、Debug环境下,运行以下代码,会出现死循环,一直打印hehe
#include
int main()
{
int i = 0;
int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
for (i = 0; i <= 12; i++)
{
arr[i] = 0;
printf("hehe\n");
}
return 0;
}
原因是数组arr[i]存在越界访问
按F10调试代码,打开监视,我们发现越界访问的arr[12]和i的值和地址一致,所以导致i=12后的值变为i=0,造成死循环
我们可以结合下图更好理解