调试(透过现象看本质)

#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.引用的库不存在

评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值