本篇文章主要是详细介绍vs中常见的快捷键,以辅助我们更好地debug。
F9:创建断点和取消断点,以辅助我们更好地观察程序运行。
比如在这个程序中,我们认为他在循环以外的内容都没有错误,我们只需要修改最后的内容。这时我们就可以在最后的位置打上断点。
?此时我们可以使程序运行起来,然后程序运行到断点的位置会停止,然后我们可以按F11或F10运行程序来观察我们想观察的数据。
但是如果在第10行的位置也按一个F9,程序会不会来到16行呢? 答案是不会,F5的作用是让它来到执行逻辑的下一个断点处。
值得一提的是,还可以对断点进行编辑。右击断点,点击操作:
我们可以对断点进行各种各样的操作,比如让它满足某个条件才执行。
?
当我们只是想让程序运行起来,我们应该按CTRL+F5。
除了这些快捷键,我们还能查看到VS中还有别的快捷键,所以我们可以来探索探索!
我们可以看一下调试窗口中的一些功能:
在debug x86环境下,我们调试这一个代码:
(关于x86和x64的环境有什么区别,这里再插播一句)?
?
不难看出,这个代码中循环越界访问了,那么为什么打印出来的结果是死循环呢。
通过监视窗口,我们可以观察到arr[12]中初始化为0后,i也初始化为0。再次运行,我们就会发现,随着arr[12]的增大,i的值也在增大,那么,这是为什么呢?
当我们&arr[12]和&i的时候,我们就会发现这两个的值一模一样。当arr[12]快要变成13的时候,arr[i]又将它初始化为0,i永远不可能变成13,这个循环永远不可能停下来,这样的现象使其永远不可能停止下来。
局部变量是习惯性放到栈区上的,先放到高地址,再放入低地址。i先创建,就在高地址上申请了一块空间。数组地址的特点:随着下标的增长,地址是由低向高变化的。
如上图初始化,那么就会使其初始化到i的时候将其初始化为0。
i小于等于11或10都不会覆盖到i。中间不一定都是两个空格。
在数组传参,调试进?函数,如何在监视窗?观察数组的内容: 数组名,n 的形式。
?