C# 如何读取崩溃转储文件(我有源代码和.pdb文件)
我已经阅读了StackOverflow上已经存在的问题,但我仍然无法让它起作用 我有C# 如何读取崩溃转储文件(我有源代码和.pdb文件),c#,windows,visual-studio-2010,crash,minidump,C#,Windows,Visual Studio 2010,Crash,Minidump,我已经阅读了StackOverflow上已经存在的问题,但我仍然无法让它起作用 我有 来自客户的小型转储文件 与客户获得的代码版本完全相同 在调试目录中,.pdb文件的代码 我尝试将迷你转储文件放入调试目录,然后在VisualStudio2010中打开它。 我不知道这是不是正确的做法,或者下一步该怎么做 “开始调试”在正常调试菜单中显示为灰色 在迷你转储文件摘要选项卡的右上角有一个带有“操作”的框。所以我点击了“仅使用本机调试”,但我得到的只是“当前位置没有可用的源代码” 我一定错过了一些非
- 来自客户的小型转储文件
- 与客户获得的代码版本完全相同
- 在调试目录中,.pdb文件的代码
我一定错过了一些非常简单的东西-请有人给我一个提示吗?据我所知,您为客户提供了一个小型转储,我猜他正在使用您的应用程序的发布版本和调试PDB文件
这就是你的问题所在,你的PDB和迷你转储不匹配。为了查看清晰的堆栈跟踪,PDB的构建配置/平台应与生成转储文件的应用程序的构建配置/平台相同。只是为了将各种信息汇集到一个答案中:
您是否有生成程序时创建的.pdb文件?仅仅重建同一个源不起作用,您需要为每个构建保留.pdb文件–2013年2月20日11:05 在将PDB与二进制文件(DLL或exe)匹配时,调试器将匹配文件名、时间戳和校验和等信息 按照AlexFarber的提示,我将源代码和发行版文件夹从客户的版本复制到我的计算机上(整个版本已经保存,包括发行版文件夹中的.pdb和.exe文件) 然后我将转储文件复制到发布文件夹中,并将Microsoft符号加载到同一文件夹中 然后我再次将转储文件打开到VisualStudio2010中 我没有看到比以前更有用的东西,我想这是因为-。我使用的是C#和.NET2.0程序集,似乎只能查看.NET4.0程序集的源代码 下一步,我将尝试Hans Passant推荐的名为sos.dll的WinDbg加载项 如何避免使用同一版本的pdb文件: 我认为如果您使用WinDbg,您可以绕过相同.pdb文件的这一要求。From“如果调试器很顽固,并且由于认为符号不匹配而不想加载符号,则可以使用.symopt+0x40设置“加载任何内容”标志。”
另外,如果我理解正确,您可以使用上面sergmat提到的chkmatch工具来匹配.exe和.pdb文件 您是否有生成程序时创建的.pdb文件?仅重建同一个源不起作用,您需要为每个生成保留.pdb文件。此外,您还需要在调试器选项中启用Microsoft Symbol Server。@AlexFarber感谢您的回复。您的意思是从Microsoft符号服务器加载Microsoft库的符号吗?我已经这样做了。我只是在检查.pdb文件(我不知道!)。在Visual Studio Relasee和Debug中分析崩溃转储从来都不适合我。。。。我说的是多年的经验