msvc“断点当前不会被击中”

时间:2015-12-14 13:30:38

标签: c++ visual-studio-debugging

MSVS 2013:我有一个静态库的VC项目和C ++代码,我想从我的exe项目中进入,该项目可以在同一个解决方案中找到。但是,调试器一直告诉我它不会达到断点,因为它无法根据静态库的调试符号加载(“断点当前不会被命中。没有为此文档加载符号“)。同一解决方案中的其他静态库工作。我刚刚添加了新的一个,因为我想进入它的一些代码,看看出了什么问题。我添加了一个从exe到lib项目的构建依赖,不知道这是否有任何影响,但我认为它不会受到伤害。我也尝试过清洁和重建。什么可能是一个提示和我没有得到的:为什么VS尝试在获得源代码时首先加载调试符号?

有趣的是,我有一个不同的解决方案,也使用相同的静态lib项目,它有效,所以问题似乎不是lib项目中的混乱设置。我比较了两个exe项目的所有链接器和编译器设置,但找不到任何可疑的差异。

任何想法都会受到高度赞赏。

1 个答案:

答案 0 :(得分:3)

有几个可能的原因:

  1. 您设置断点的功能已内联(请检查链接时优化标记/LTCG并禁用任何内容)
  2. 您构建了没有调试信息的库(请查看/DEBUG标志)
  3. 附加调试器时Visual Studio没有找到包含调试信息的.pdb文件(这会在输出窗口中产生警告)
  4. 以上编译器和链接器选项不匹配(在这种情况下你会看到警告)
  5. 尝试以下操作:对静态库和您正在运行的可执行项目使用默认的Debug构建。在可执行项目中引用库项目,并且DONT明确地将库添加到Linker-> Input-> Additional Dependencies。