调试时 Visual Studio 跳过(和移动)断点 (C++/CMake)

Kev*_*vin 1 c++ debugging breakpoints cmake sfml

我有一个在 Ubuntu 上创建的 CMake 项目,我现在正在 Visual Studio 上加载它(用于双引导开发)。

该项目可以在这里看到:http : //github.com/KiloMikeCodesStuff/Gravity

下图显示了问题: 图片

注意左边我是如何清楚地在第 5 行设置断点的。当我运行它时,断点移动并在第 8 行停止。

我试过了:

  • 打扫
  • 重建
  • 重命名变量

在所有情况下,结果都是一样的。我在想可能有一些代码优化(因为我选择为 x64 版本构建,因为这些是我为 SFML 拥有的唯一 DLL)。

这会是罪魁祸首吗?如果是这样,我如何禁用优化(记住它是一个 CMake 项目,而不是一个典型的 VS 项目)?

120*_*arm 6

最可能的原因很简单,没有与第 5 行相关联的汇编代码,其后的第一行是第 8 行。在优化代码时可能会发生这种情况。禁用优化的命令行标志是 Visual C++ 是/Od. 由于前几行是简单的变量赋值,这些变量可以优化到寄存器中或推迟到以后。

这是无害的,因为当您在第 5 行设置断点时,执行仍在函数中的第一个代码处停止。尝试调试优化构建的常见问题适用(奇怪的变量值、执行跳跃等)。