PDB与图像错误不匹配

时间:2011-10-13 04:44:55

标签: visual-studio-2008 debugging

我正在尝试为开源项目npp-community添加一些内容,但似乎无法调试。我正在尝试调试的代码被编译成一个dll,然后链接到主项目。设置断点时,我收到以下错误:

  

断点当前不会被击中。没有为此文档加载任何符号。

当我检查debug>windows>modules下的模块时,我检查符号加载信息并得到以下错误。

  

PDB与图像不匹配

我已经尝试退出visual studio并重新启动/重新编译,但似乎没有解决任何问题。谷歌似乎给出了围绕圈子的线索,没有明确的答案。

6 个答案:

答案 0 :(得分:10)

我的VS2010项目存在类似问题,结果问题是由于项目属性错误匹配 - > C / C ++ - > 输出文件 - > '程序数据库文件名'项目属性 - > 链接器 - > 调试 - > '生成程序数据库文件'

通过将'程序数据库文件名'更改为“从父级或项目默认继承”来修复它。

答案 1 :(得分:3)

问题在于调试器无法为您的模块找到有效的PDB文件。使用两个参数将PDB文件与二进制图像进行匹配:标识符(GUID)和年龄。有关此过程的更多信息,请参见this article

确保您的模块具有有效的PDB文件,并且它们与模块或调试器的搜索路径位于同一目录中(Debug-> Options and settings ...-> Symbols)。

答案 2 :(得分:1)

有时会发生这种情况,因为您可能将项目构建为版本。

右键单击解决方案,然后单击“批量生成”>检查所有项目,然后单击“清除”

答案 3 :(得分:0)

我在为WinCE5.0开发智能设备项目时有这个。解决方案是冷启动我正在调试的设备+清理vs2008中的解决方案

答案 4 :(得分:0)

如果您调试的是nuget软件包,我建议这样做:

进入Tools->Options->Debugging->Symbols并添加https://symbols.nuget.org/download/symbols

否则,您需要手动从dll修改guid以匹配PDB文件中的guid。

答案 5 :(得分:0)

我与nuget包发生名称冲突。我在名为gtest的项目中使用了googletest软件包。 Visual Studio不喜欢那样,也找不到pdb文件。重命名该项目,然后它就起作用了。