无法加载 PDB。 "A matching symbol file was not found in this folder."

Cannot get PDB to load. "A matching symbol file was not found in this folder."

我有一个项目,大约一个小时前调试工作正常,现在在最近一次重建之后我无法让它加载符号文件,所以我无法设置断点。

我已经在 Fixing “The breakpoint will not currently be hit. No symbols have been loaded for this document.” 上尝试了此处建议的所有内容,但无法加载我的 PDB。有很多关于 .PDB 文件未在此处加载的问题,我花了最后一个小时尽可能多地检查它们并尝试所有建议,但无济于事。

我试过Build>Rebuild Solution,Build>Clean+Build>Build Solution,Build>Clean+Build>Rebuild Solution,手动删除BIN输出文件夹中的所有文件+Build Solution and/or Rebuild Solution。每种情况都会发生同样的事情;编译器创建了一个全新的 .DLL 和 .PDB 文件,但 .PDB 拒绝在运行时加载。

我什至尝试过 Debug>Windows>Modules>[Right-Click on offending symbol library]>Load Symbols 并且我手动浏览到正确的 .PDB 文件,但是当我点击 Open 时它只是告诉我 "A matching symbol file was not found in this folder"。

使用 Debug>Windows>Modules>[Right click...]>Load Symbol Information 得到:

C:\Windows\ssoederPDMupgrade.pdb: Cannot find or open the PDB file. C:\VS_TestFolder\EPDMAddIns\ssoederPDMupgrade\bin\Debug\ssoederPDMupgrade.pdb: PDB does not match image. C:\VS_TestFolder\EPDMAddIns\ssoederPDMupgrade\obj\Debug\ssoederPDMupgrade.pdb: PDB does not match image. C:\Windows\ssoederPDMupgrade.pdb: Cannot find or open the PDB file. C:\Windows\symbols\dll\ssoederPDMupgrade.pdb: Cannot find or open the PDB file. C:\Windows\dll\ssoederPDMupgrade.pdb: Cannot find or open the PDB file. C:\Users\ssoeder\AppData\Local\Temp\SymbolCache\ssoederPDMupgrade.pdb\afe14027e9c6490883d12f2f139cb5911\ssoederPDMupgrade.pdb: Cannot find or open the PDB file. C:\Users\ssoeder\AppData\Local\Temp\SymbolCache\MicrosoftPublicSymbols\ssoederPDMupgrade.pdb\afe14027e9c6490883d12f2f139cb5911\ssoederPDMupgrade.pdb: Cannot find or open the PDB file. C:\VS_TestFolder\EPDMAddIns\ssoederPDMupgrade\obj\Debug\ssoederPDMupgrade.pdb: PDB does not match image. SYMSRV: C:\Users\ssoeder\AppData\Local\Temp\SymbolCache\ssoederPDMupgrade.pdb\AFE14027E9C6490883D12F2F139CB5911\ssoederPDMupgrade.pdb not found

SYMSRV: http://msdl.microsoft.com/download/symbols/ssoederPDMupgrade.pdb/AFE14027E9C6490883D12F2F139CB5911/ssoederPDMupgrade.pdb not found

http://msdl.microsoft.com/download/symbols: Symbols not found on symbol server.

你试过这些步骤了吗?

1-删除.SUO文件

2- 进行干净的构建。

3- 构建项目

答案不多但是...
我认为 VS Express 2013 中的某些内容已损坏。我不知道如何或为什么 - 我在这里可能完全错了,但简单的问题是让我的断点工作的是安装 VS Community 2015。

安装 VS Community 2015 (VSC 2015) 后,符号文件加载没有问题,所有断点都命中。这也让我现有的 VS Express 2013 (VSC 2013) 安装中的所有东西都能正常工作,所以我现在可以毫无问题地使用其中任何一个。


事件时间线:

  1. 我已经在同一项目的 VSE 2013 中工作了一两个月了。编写 class 库,使用 Debug>Attach to process 进行调试。

  2. 我昨天对单个 class 模块中的代码进行了一些更改(没有其他更改)并使用 Build>Rebuild Solution 清理并重新生成当前配置(DEBUG)输出文件。

  3. 事件视界: 我像往常一样使用 Attach to process 进行调试,我的断点显示为空心,并显示消息它不会被击中因为没有加载任何符号。

  4. 在发帖之前,我花了很多时间来解决这个问题(有关尝试的详细信息,请参阅我的原始问题)。

  5. 收到@HansPassant 关于从命令行使用 Symchk 的建议。尝试按照链接到的说明进行操作但无法使其正常工作 - 命令行未将 SymchkSymchk.exe 识别为有效 commands/processes/etc。

  6. 我下载了 WDK 8.1 update 并安装了。

  7. 打开 VSE 2013,收到有关驱动程序加载失败的错误消息,应用程序在加载之前冻结。 实际上,在多次尝试后,我发现它有时会进入欢迎屏幕 - 但即便如此仍然没有反应。

  8. 在 M$ VS 站点下载最新的 VSE 2013 安装文件副本进行修复安装,我注意到有一个较新的版本:VSC 2015。

  9. 已下载并安装 VSC 2015。

  10. 打开项目,使用 Debug>Attach to process 开始调试, 成功了 - 加载了所有符号并且我的断点有效。注意:我没有对项目进行任何更改 * - 只是打开它并 运行.
    * 除非 IDE 仅通过打开项目 对我不知情的人进行了一些更改。

  11. 这似乎也修复了 VS2013 安装中损坏的任何驱动程序,因为我回到 VSE 2013 并且它打开时没有错误 AND 我是能够打开同一个项目并执行 Attach to process 并且加载的所有符号和断点再次工作。

我在使用 VS2013 Ultimate 时遇到了同样的问题。我多次清理并构建程序集,并删除了 C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files 中的所有临时文件。

我也验证了在"Debug -> Options and Settings -> Symbols"中没有排除任何模块...最后,我发现了一个与部署到GAC中的引用不同的引用。

很高兴你能在 CBRF23 上工作!我在 DevC++ 中尝试编译 DirectX 效果文件时遇到了这个问题。我发现下载 pdbs 的最简单方法是先在此处下载 WinDBG: http://go.microsoft.com/fwlink/p/?LinkId=536682 那么举个例子,假设你要下载d3dx9d.pdb。从 C:\windows\system32 复制 d3dx9d.dll 并将另一个副本粘贴到您的(调试器)windbg symchk.exe 文件夹中,然后连接到您的互联网服务器,转到 windows 开始菜单,运行: [然后键入] cmd [按回车键],然后转到命令提示符 (MS-DOS Window),然后转到 windbg 调试器文件夹 (例如,如果它在 C:\windbg_6p12p0002p633\debugger_x86 文件夹中,则键入):

cd windbg_6p12p0002p633[输入] cd debugger_x86

[最后键入以下内容,但将双星号**更改为一个星号 *:]

symchk /if d3dx9d.dll srv**c:\symbols*\mainserver\symbols*https://msdl.microsoft.com/download/symbols

请再次注意,srv 后应该只有一个星号(post 会将星号解释为斜体或粗体),而不是两个,然后它将打开 symchk.exe 并下载将输入的dll关联的pdb符号文件自动放入创建的C:\symbols\文件夹中!