#Debug(调试)对代码不做任何优化,便于程序员调试。
#Release(发布),对代码自作主张的优化,直接给用户使用。
VS调试快捷键
补充一下F9快捷键的应用
比如我们想看见第四次循环的结果,除了一直按F10,更加方便的是在prinft前面点F9,鼠标右键点击,出现条件的字样,点击它,接着如下图后,在按回车,接着关闭按F5就可以看见第四次结果
如果想了解更多VS的调试快捷键VS中常用的快捷键_vs快捷键-CSDN博客
监视
我们有时候想看一个循环他一步步是怎么变化的,这是我们就需要一个监视窗口。先按F10
随便打开一个监视1(2,3,4),在监视窗口输入我们想看的值,就可以清晰看见了。
如果监视看的不够,我们也可以看见变量内存信息。
这里有个完全进入一维二维数组监测的小tip在监视窗口输入这个数组名,比如这个一维数组有5行,输入:arr(数组名),5 这样就可以进入啦。
调试应用
如图我们想设计一个从1到3的阶乘和,结果应该是9,但调试结果却是15。我们打开监视窗口查找一下bug。按照经验,我们只用看第三次ret,sum是多少就应该可以发现。
我们的设置ret是为了每次让他从1开始乘,可这里第三次循环时,他的值却是2。因此我们要改变ret的位置,把ret放在j的循环里面,这样每一次的ret都是从1开始了。
**我们再来看这样一个bug**
在一个大小为10的数组里面,我们要把多余的第11,12的数字改成0。但是程序打印出来时下面光标一直闪烁,说明死循环了。这就要用到存放地址的知识了。
栈区内存的使⽤习惯是从⾼地址向低地址使⽤的,因为i的位置在arr前面,所以变量i的地址是较大的。arr数组小于i的地址。
如果是左边的内存布局,那随着数组下标的增⻓,往后越界就有可能覆盖到i,这样就可能造成死循环的。
但是为什么在i和arr之间有空格呢?这就是在不同的编译器下(以VS为例子),空间大小不同。
错误提示
这种错误一般情况下是1.标示符名不存在 2.拼写错误 3.头文件没包含 4.引用的库不存在