【问题标题】:cmake generated VS project can't break pointcmake生成的VS项目不能断点
【发布时间】:2013-06-06 18:44:31
【问题描述】:

我目前能够使用 cmake 设置和编译一个 Visual Studio 项目,但是我根本无法在源代码中设置断点。最初,当我尝试使用调试器运行无法找到调试符号时,VS 警告我。为了解决这个问题,我只需转到项目属性并选择链接器->调试并将“生成调试信息”设置为是。现在它会生成必要的 pdb 文件,但是如果我在源代码中放置一个断点,它会空出并告诉我没有为文档加载任何符号。

所以我的问题是为什么它与 pdb 文件的源不匹配,我能做些什么来纠正这个问题?

谢谢。

这是一个带有简单示例的 git repo:https://github.com/Samurai336/CmakeSimple

【问题讨论】:

  • 您根本不需要在 Visual Studio 中更改任何设置,以便 CMake 生成的项目能够设置断点。切换到 CMake 后,您是否清理过构建项目。尽管请记住使用 CMake,但不建议将您的构建树包含在源代码中,因此如果您遵循该树应该是干净的..
  • 所以听起来我没有在某处正确设置标志,因此当我在 cmake 中点击生成时,它知道将项目设置为生成 pdb。知道我的 cmake 中可能缺少什么吗?
  • 默认情况下,cmake 会设置正确的值。如果您以某种方式禁用了该功能,我将使用 cmake-gui 中的 Delete cache 选项并重置您的生成器,然后将您的应用程序构建干净。此外,如果您没有选择源外构建,那么这将是一个完美的时机。
  • 源外构建是什么意思。如果这就是你的意思,构建目录在源目录之外。
  • 是的。 cmake.org/Wiki/…

标签: c++ windows debugging visual-studio-2012 cmake


【解决方案1】:

好的,由于深入挖掘了用户Fraser 的评论,他问我是否将调试信息格式设置为“/Zi 或 /ZI”,所以我找到了问题所在。好吧,它被设置为 Zi,所以为了把科学重新放在计算机科学中,我给了 /ZI 一个机会。编译器对我大喊“'/ZI' 和 '/02' 不兼容”。所以今天我研究了 /02 标志是什么,并意识到它是最大速度优化标志,并且有一种预感,这就是为什么它在调试时遇到问题。果然,当我将标志更改为 '/Od'(disabled) 时,一切都相应地中断了。

这给我留下了一个主要问题:如何从 cmake 为 VS 编译器设置这些标志?

如果我还没有找到答案,我可能会将其作为一个单独的问题提出。

感谢大家的帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-12
    • 2011-01-05
    • 2023-03-10
    • 2012-07-07
    • 1970-01-01
    • 1970-01-01
    • 2017-06-19
    相关资源
    最近更新 更多