Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何读取崩溃转储文件(我有源代码和.pdb文件)_C#_Windows_Visual Studio 2010_Crash_Minidump - Fatal编程技术网

C# 如何读取崩溃转储文件(我有源代码和.pdb文件)

C# 如何读取崩溃转储文件(我有源代码和.pdb文件),c#,windows,visual-studio-2010,crash,minidump,C#,Windows,Visual Studio 2010,Crash,Minidump,我已经阅读了StackOverflow上已经存在的问题,但我仍然无法让它起作用 我有 来自客户的小型转储文件 与客户获得的代码版本完全相同 在调试目录中,.pdb文件的代码 我尝试将迷你转储文件放入调试目录,然后在VisualStudio2010中打开它。 我不知道这是不是正确的做法,或者下一步该怎么做 “开始调试”在正常调试菜单中显示为灰色 在迷你转储文件摘要选项卡的右上角有一个带有“操作”的框。所以我点击了“仅使用本机调试”,但我得到的只是“当前位置没有可用的源代码” 我一定错过了一些非

我已经阅读了StackOverflow上已经存在的问题,但我仍然无法让它起作用

我有

  • 来自客户的小型转储文件
  • 与客户获得的代码版本完全相同
  • 在调试目录中,.pdb文件的代码
我尝试将迷你转储文件放入调试目录,然后在VisualStudio2010中打开它。 我不知道这是不是正确的做法,或者下一步该怎么做

“开始调试”在正常调试菜单中显示为灰色

在迷你转储文件摘要选项卡的右上角有一个带有“操作”的框。所以我点击了“仅使用本机调试”,但我得到的只是“当前位置没有可用的源代码”


我一定错过了一些非常简单的东西-请有人给我一个提示吗?

据我所知,您为客户提供了一个小型转储,我猜他正在使用您的应用程序的发布版本和调试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中分析崩溃转储从来都不适合我。。。。我说的是多年的经验