11 如何在Visual Studio中调试
Breakpoints and reading memory
设断点来读取内存
1. Breakpoints
断点是程序中调试器会break(中断)的一个点,当执行到断点所在行时,执行线程会悬停
Visual Studio 断点快捷键:F9
Debug(调试)时,要确保自己==在“Debug”模式下==,配置可见Configuration “Release”模式下代码会被更改,你的断点可能永远不会执行 ^a1059f
调试
Step Into : F11
Step Over : F10
Step Out : Shift + F11
现在对 main 函数的第七行进行Step into
黄色箭头表明还没执行当前行,按 F10 箭头到第六行 再次 F10 后,字符串才被输出
看这段程序:
int main()
{
· int a = 8; //断点
a++;
const char* string = "Hello";
for (int i = 0; i < 5; i++)
{
const char c = string[i];
std::cout << c << std::endl;
}
Log("Hello Wolrd");
std::cin.get();
}
此时int a=8
还没有被执行,还是没初始化的内存
Memory View(内存视图)
^dd3537
Debug 过程中,上方导航栏 Debug->Windows->Memory->Memory1 即可调出内存视图
输入&a
即可访问变量 a 的内存地址,其中都是 16 进制数。
为什么都是 cc?
说明这是一个未初始化的堆栈内存
按下 F10
可以看到内存中存储的数据发生改变。其中==每两个十六进制数字代表一个字节==。
如果我想跳出循环,按 Step Out 会跳出整个函数。所以只需要再设一个断点,再按 F5 即可运行到断点处。