环境的准备,需要先选择debug版本,release版本是面向用户的,VS会对其进行一定的优化。
首先我们先注意几个快捷键。
F5是“开始调试”,若按下F5,会发现整个代码都已经执行完毕。
一般来说,F5不单独使用,而是和F9一起搭配使用。
F9是“设置(取消)断点”,可以让F5按下,开始调试之后代码执行到断点所在的位置停下。
这里我们还可以设置断点被触发的条件,这种断点叫做条件断点,如下图。
在没遇到函数的时候,F10和F11的运行类似,但当遇到函数的时候,F10会直接调用函数并进入到下一句,而F11会进入到函数内部执行相关的操作,便于我们观察函数内部的细节。
简而言之,F10是逐过程,遇到函数不进入函数,直接执行完函数的内容。
F11是逐语句,遇到函数,会进入函数,会执行代码的每个细节,力度更细。
Ctrl+F5是只执行但不调试,在VS环境下与F5的展现差别不大,但在有的编译器里会一闪而过,就是看不到内容而只是执行,不便于调试。
按F10进入代码调试后,我们可以打开一些窗口让我们能更好地观察到我们想看见的内容
监视这个功能可以让我们输入想观察的变量来显示其内部的细节。
自动窗口是当程序运行到变量的位置后,它会自动显示相应的内部细节。
这个框里的局部变量与自动窗口的功能类似,也会自动显示内部的细节。
但自动窗口与局部变量有一定的局限性,当代码执行的过程里用不到一些变量的时候,它很有可能就不再显示这些变量。在程序较为复杂的时候,还是监视功能较为方便。
内存功能可以让我们定位到我们想观察的变量在内存中的存储情况。
反汇编功能能让我看见代码的汇编语言形式。
打开寄存器可以看见我们所使用的寄存器里存放的地址。
接下来我们来看一下函数调用堆栈的功能。这个功能可以让我们更好地看到函数的调用关系,特别是如果函数之间调用跨文件的话。