【问题标题】:PDB does not match image ErrorPDB 与图像不匹配错误
【发布时间】:2020-01-10 00:14:13
【问题描述】:

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

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

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

PDB 与图片不匹配

我已尝试退出 Visual Studio 并重新启动/重新编译,但这似乎无法解决任何问题。谷歌似乎给出了绕圈子的话题,没有明确的答案。

【问题讨论】:

    标签: visual-studio-2008 debugging


    【解决方案1】:

    我的 VS2010 项目也有类似的问题,原来问题是由于 项目属性 -> C/C++ -> 输出文件不匹配 -> '程序数据库文件名'项目属性 -> 链接器 -> 调试 -> '生成程序数据库文件'.

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

    【讨论】:

    • 这有帮助,谢谢。就我而言,我必须将其设置为 _my_pyd_name_d.pdb 。
    • 哦,重启 Visual 也有很大帮助。
    • 两个地方有相同的设置很烦人——而且它们必须手动保持同步。如果它们不同步,则不会发出警告。更糟糕的是,您的 PDB 不会莫名其妙地加载。
    • 感谢一百万次,这解决了我遇到的同样该死的问题!
    • 这很有帮助,对于我的情况,我还需要将“项目属性 -> 链接器 -> 输出文件”设置为“从父级或项目默认值继承”。我猜两者都需要修复。
    【解决方案2】:

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

    确保您的模块具有有效的 PDB 文件,并且它们与模块位于同一目录中或在调试器的搜索路径中(调试->选项和设置...->符号)。

    【讨论】:

      【解决方案3】:

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

      右键单击解决方案并单击“批量构建”>检查所有项目并单击“清理”

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          【解决方案5】:

          如果您正在调试的东西是一个 nuget 包,我建议这样做:

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

          否则,您只能手动修改 dll 中的 guid 以匹配 PDB 文件中的内容。

          【讨论】:

            【解决方案6】:

            我与 nuget 包发生了名称冲突。我在一个名为 gtest 的项目中使用了 googletest 包。 Visual Studio 不喜欢这样,并且找不到 pdb 文件。重命名项目,然后它就可以工作了。

            【讨论】:

              猜你喜欢
              • 2021-07-06
              • 1970-01-01
              • 2017-11-23
              • 1970-01-01
              • 1970-01-01
              • 2018-09-27
              • 2016-03-18
              • 2018-07-18
              • 1970-01-01
              相关资源
              最近更新 更多