5

使用 Visual Studio 2010 远程调试 C# .dll - 获取 .PDB 文件不匹配 - 任何但它绝对是来自构建......

新信息:[[此问题未解决。我有三台计算机:a)XP sp3、b)XP sp3 和 c)Vista sp1,我可以在 a) 和 c) 上构建最简单的测试程序,并使用模块窗口 -- 选择我的 test5.exe 并加载创建时创建的 .pdb - 同一日期同一时间同一文件夹......但 Visual Studio 说“在此文件夹中找不到匹配的符号文件” - 加载正确 .pdb 的所有努力都因不匹配而失败投诉......无论是:a)远程到b)或c)-或-c)远程到a)或b)---帮助!]]

我已经隐式和显式地设置了 .PDB 的位置 - 没关系....

我已将符号设置设置为取消选中源文件必须完全匹配....

我没有看到任何错误....

只是:


C:\POSWIN\DBS.KGW.tst7.pdb: Cannot find or open the PDB file.
C:\Projects\SP\DBS.KGW.tst7STUB\DBS.KGW.tst7\obj\Debug\DBS.KGW.tst7.pdb: PDB does not match image.
C:\Projects\SP\DBS.KGW.tst7STUB\DBS.KGW.tst7\bin\Debug\symbols\DLL\DBS.KGW.tst7.pdb: Cannot find or open the PDB file.
C:\Projects\SP\DBS.KGW.tst7STUB\DBS.KGW.tst7\bin\Debug\DLL\DBS.KGW.tst7.pdb: Cannot find or open the PDB file.
C:\Projects\SP\DBS.KGW.tst7STUB\DBS.KGW.tst7\bin\Debug\DBS.KGW.tst7.pdb: PDB does not match image.
C:\Projects\SP\DBS.KGW.tst7STUB\DBS.KGW.tst7\bin\Debug\MicrosoftPublicSymbols\symbols\DLL\DBS.KGW.tst7.pdb: Cannot find or open the PDB file.
C:\Projects\SP\DBS.KGW.tst7STUB\DBS.KGW.tst7\bin\Debug\MicrosoftPublicSymbols\DLL\DBS.KGW.tst7.pdb: Cannot find or open the PDB file.
C:\Projects\SP\DBS.KGW.tst7STUB\DBS.KGW.tst7\bin\Debug\MicrosoftPublicSymbols\DBS.KGW.tst7.pdb: Cannot find or open the PDB file.
C:\WINDOWS\symbols\DLL\DBS.KGW.tst7.pdb: Cannot find or open the PDB file.
C:\WINDOWS\DLL\DBS.KGW.tst7.pdb: Cannot find or open the PDB file.
C:\WINDOWS\DBS.KGW.tst7.pdb: Cannot find or open the PDB file.

4

3 回答 3

5

几个建议:

  • 在 Visual Studio 中,当您附加到进程时,打开模块调试窗口,Ctrl+DMDebug-> Windows->Modules从菜单中)并找到导致问题的 dll。右键单击它并选择Load Symbols From然后Symbol Path找到正确的 pdb 文件并查看它是否加载。
  • 如果您的应用程序是 asp.net,那么您可以尝试清除临时文件夹,因为它有时会导致类似于您的问题。该文件夹应位于如下位置:

    bootdrive:\%windir%\Microsoft.NET\Framework\v2.0.5 0727\Temporary ASP.NET

取决于您的 .net 版本。

于 2012-04-18T18:35:44.640 回答
1

我遇到了同样的问题,解决方案非常简单......

就我而言,我有两个 VS 解决方案,第一个是带有 .exe 的主应用程序,第二个是 .dll 插件项目。当我尝试调试一个 dll 项目时,我得到一个 pdb 不匹配错误(在模块窗口中)。原因是 pdb 实际上根本不匹配,因为:

当我测试第一个解决方案时,我将 .dll 文件从第二个解决方案复制到带有 .exe 文件的调试文件夹。
然后,当我尝试调试第二个(.dll)解决方案时,它使用了第一个解决方案中的 .exe 文件以及该目录中的 .dll 文件,但是该 .dll 已过时并且与新的 pdb 文件不匹配。因此,将新的 .dll 文件从第二个项目复制到 .exe 目录解决了我的问题。

于 2012-08-22T21:19:13.627 回答
1

解决办法是,对于远程调试连接,有两种连接方式,授权的和未授权的……对于防火墙问题,我默认是未授权的。对于 VS 2010 C# 解决方案,投诉仅仅是 .PDB 不匹配。用尽了我能想到的所有选项后,我用 C++ 复制了我的简单测试解决方案,界面不同且更好,并且在您设置它时会发出警告,除非您处于授权连接上,否则您将不会获得符号! !-- 一旦我克服了防火墙问题 -- 并通过与正在调试的远程 PC 的授权连接查看我的符号,我将发布该确认信息......顺便说一句,通常会在您登录时收到警告通过授权连接,主机和被调试计算机的用户 ID 和密码必须相同,

于 2012-04-19T16:20:24.147 回答