【问题标题】:Visual Studio 2010 "Cannot find or open the PDB file"Visual Studio 2010“找不到或打开 PDB 文件”
【发布时间】:2011-12-07 09:16:40
【问题描述】:

我尝试在 Visual Studio 10 中调试程序,但遇到断点问题。我把*.dll文件对应的*.pdb文件放到同一个目录下。但是在检查模块时,我看到每个 DLL 文件都被签名为Cannot find or open the PDB file

我该如何解决这个问题?如何检查 *.pdb 文件的预期位置?

【问题讨论】:

    标签: visual-studio-2010 debugging dll pdb


    【解决方案1】:

    模块(Ctrl-D、M)是整理正在发生的事情的好地方,因此您处于正确的区域。

    右键单击您希望找到 pdb 的模块/dll,然后选择 Symbol Load Information

    它应该在与您的 dll 相同的目录中开始查找,如果找到 pdb 将加载它或告诉您 pdb 文件与 dll 不匹配。

    【讨论】:

      【解决方案2】:

      转到调试 -> 选项和设置 -> 调试 -> 符号,检查符号位置下的 Microsoft 符号服务器。见附图。

      【讨论】:

      • 好的,但是本地版本的符号去哪了?有没有办法重新创建它们,就像它变得不可用之前一样?
      【解决方案3】:

      我在 VS2013 中遇到了类似的问题……与 PDB 文件和 IISEXPRESS 有关。我尝试了几件事并最终通过这样做解决了它:

      工具 > 选项 > 调试 > 符号,然后按“清空符号缓存”按钮

      在重新运行我的应用程序时,Visual Studio 需要一段时间来重新加载所有符号,但它最终确实这样做了,并且问题得到了解决!

      【讨论】:

        【解决方案4】:

        就我而言,我正在调试一个单击一次的 Windows 应用程序。在模块的Symbol Load Information 中,它告诉我 pdb 与当前附加的图像不同步。我必须查看整个列表,而不仅仅是顶部或底部的项目,以获得错误文本。

        这告诉我重新编译并重新发布我所附加的内容,这样两者就会匹配。 这导致模块列表显示为我正在调试的程序集已加载符号,然后继续调试问题。

        【讨论】:

        • 对我来说,它不是一个点击一次的应用程序,但最终结果是相同的,因为 .dll 已过期。我正在使用AssemblyLoadContext.LoadFromAssemblyName。我原以为程序会从项目的 bin 文件夹中加载 .dll,但我错了。相反,它首先搜索另一个文件夹,其中隐藏了 .dll 的过时版本(我不知道)。这使得 .pdb 不匹配,因此即使我手动尝试将其指向那里,它也不会加载。
        【解决方案5】:

        更改项目目录,就像您在 Windows 系统目录中运行/调试代码一样,它不会以管理员权限执行,

        在我的情况下,我将我的项目保存在 C: 驱动器中,当我执行代码时,我抛出访问冲突以读取输入数据错误,然后我从不同的位置尝试它,它工作正常

        & 你也必须加载模块

        【讨论】:

          猜你喜欢
          • 2012-10-08
          • 2015-01-27
          • 2015-04-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-12-03
          相关资源
          最近更新 更多