Visual Studio 调试时跳过(和移动)断点 (C++ / CMake)
Visual Studio Skipping (And Moving) Breakpoint When Debugging (C++ / CMake)
我有一个在 Ubuntu 上创建的 CMake 项目,现在正在 Visual Studio 上加载(用于双启动开发)。
项目可以在这里看到:http://github.com/KiloMikeCodesStuff/Gravity
下图显示问题:
请注意,在左侧,我清楚地在第 5 行设置了断点。当我 运行 它时,断点移动并在第 8 行停止。
我试过:
- 清洁
- 正在重建
- 重命名变量
在所有情况下,结果都是一样的。
我在想的是,也许有一些代码优化(因为我选择为 x64 版本构建,因为这些是我拥有的唯一用于 SFML 的 DLL)。
这会是罪魁祸首吗?如果是这样,我如何禁用优化(记住它是一个 CMake 项目,而不是典型的 VS 项目)?
最可能的原因是第 5 行没有关联的汇编代码,其后的第一行代码是第 8 行。在优化代码时可能会发生这种情况。禁用优化的命令行标志是 Visual C++ 是 /Od
。由于前几行是简单的变量赋值,这些变量可以优化到寄存器中或推迟到以后。
从某种意义上说这是无害的,因为当您在第 5 行设置断点时,执行仍会停止在函数内的第一个代码处。尝试调试优化构建的常见问题适用(奇怪的变量值、执行跳转等)。
我有一个在 Ubuntu 上创建的 CMake 项目,现在正在 Visual Studio 上加载(用于双启动开发)。
项目可以在这里看到:http://github.com/KiloMikeCodesStuff/Gravity
下图显示问题:
请注意,在左侧,我清楚地在第 5 行设置了断点。当我 运行 它时,断点移动并在第 8 行停止。
我试过:
- 清洁
- 正在重建
- 重命名变量
在所有情况下,结果都是一样的。 我在想的是,也许有一些代码优化(因为我选择为 x64 版本构建,因为这些是我拥有的唯一用于 SFML 的 DLL)。
这会是罪魁祸首吗?如果是这样,我如何禁用优化(记住它是一个 CMake 项目,而不是典型的 VS 项目)?
最可能的原因是第 5 行没有关联的汇编代码,其后的第一行代码是第 8 行。在优化代码时可能会发生这种情况。禁用优化的命令行标志是 Visual C++ 是 /Od
。由于前几行是简单的变量赋值,这些变量可以优化到寄存器中或推迟到以后。
从某种意义上说这是无害的,因为当您在第 5 行设置断点时,执行仍会停止在函数内的第一个代码处。尝试调试优化构建的常见问题适用(奇怪的变量值、执行跳转等)。