只是将各种信息汇总到一个答案中:
您是否有在构建程序时创建的 .pdb 文件?仅仅重建相同的源是行不通的,你需要为每个 build 保留 .pdb 文件。– 亚历克斯·法伯 2013年 2 月 20 日在 11:05
“在将 PDB 与二进制文件(DLL 或 exe)匹配时,调试器会匹配文件名、时间戳和校验和等信息。” (Saikat Sen,Codeproject 文章)
按照 AlexFarber 的提示,我将客户构建的源代码和发布文件夹复制到我的计算机上(整个构建已保存,包括发布文件夹中的 .pdb 和 .exe 文件)。
然后我将转储文件复制到发布文件夹中,并将 Microsoft 符号加载到同一文件夹中。
然后我再次将转储文件打开到 Visual Studio 2010 中。
我没有看到比以前更有帮助的东西,我认为这是由于这个原因 -请参阅这个 SO question 的接受答案。我正在使用 C# 和 .NET 2.0 程序集,看来我只能查看 .NET 4.0 程序集的源代码。
接下来,我将尝试 Hans Passant 在同一个问题上推荐的名为 sos.dll 的 WinDbg 插件。
如何绕过使用同一构建中的 pdb 文件的需要:
如果您使用 WinDbg,我认为您可以绕过对相同 .pdb 文件的此要求。来自virtualdub “如果调试器很顽固并且不想加载符号,因为它认为它们不匹配,您可以使用 .symopt+ 0x40 来设置“加载任何东西”标志。”
另外,如果我理解正确,您可以使用上面 sergmat 提到的 chkmatch 工具来匹配 .exe 和 .pdb 文件。