MSVC "断点当前无法命中"

6
MSVS 2013:我有一个VC项目和C++代码静态库,我想从同一个解决方案中的exe项目中进入其中的静态库进行调试。然而,调试器一直告诉我无法命中断点,因为它不能加载静态库对应的调试符号(“目前无法命中断点。未加载该文档的任何符号”)。同一解决方案中的其他静态库可以工作。我最近添加了新的静态库,因为我想进入其中的一些代码以查看出了什么问题。我从exe到lib项目中添加了构建依赖项,不知道这是否有任何影响,但我认为这不会有害。我还尝试了清理和重建。我的疑问是:为什么VS首先要尝试加载调试符号,当它已经有了源代码?

有趣的是,我有另一个解��方案,也使用完全相同的静态库项目,那里它可以正常工作,所以问题似乎并不是lib项目中设置混乱造成的。我比较了两个exe项目的所有链接器和编译器设置,并没有发现任何可疑的差异。

非常感谢您提供任何可能的解决办法。

1个回答

4
以下是可能的原因:
  1. 您设置断点的函数已被内联(请检查您的链接时优化标志/LTCG并禁用所有优化)
  2. 您在没有调试信息的情况下构建了库(请检查/DEBUG标志)
  3. 当附加调试器Visual Studio无法找到包含调试信息的.pdb文件(这会在输出窗口中产生警告)
  4. 上述编译器和链接器选项不匹配(在这种情况下,您应该看到警告)
请尝试以下操作:为静态库和可执行项目均使用默认的Debug构建。在可执行项目中引用库项目,并且不要显式地将库添加到Linker->Input->Additional Dependencies。

你是对的,4没问题--我错过了警告。在输出目录中,我将$(SolutionDir)作为宏,这导致在一个解决方案中正确的输出目录,在另一个解决方案中错误的输出目录,因此链接器设置中指定的库不是生成的构建库。谢谢! - iko79

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接