如何打开C#崩溃转储(Minidump)

时间:2011-08-09 14:35:54

标签: c# debugging windbg crash-dumps minidump

我们的C#应用​​程序在未处理的异常时调用MinidumpWriteDump。

我收到了一些来自用户的故障转储,我似乎无法使用SOS打开故障转储并查看导致崩溃的异常。

我们正在采取的转储类型是 MiniDumpWithPrivateReadWriteMemory

我将_NT_SYMBOL_PATH配置为使用MS公共符号服务器,并且在WinDBG中调试此故障转储时,它会自动下载所需的DLL(因为此转储是在具有不同版本的.NET 2的计算机上进行的 - 即以.3053结尾的那个

运行时!线程我得到这个输出:

无法请求ThreadStore

我已经浏览了所有可能的站点,这些站点解释了处理不同版本CLR的技术,而不是转储机中采用的技术,没有一个能为我工作。

我可以做些什么来调试这些崩溃?

我们做错了什么(从.NET进程中采取错误的转储等)

编辑:

这是〜*:

的结果
  

0:000> 〜*。 0 Id:1338.258暂停:0 Teb:7ffdf000 Unfrozen         优先级:0 1 Id:1338.2a0暂停:0 Teb:7ffde000 Unfrozen         优先级:0 2 Id:1338.1fd4暂停:0 Teb:7ffdd000   解冻         优先级:0 3 Id:1338.17e8暂停:0 Teb:7ffda000   解冻         优先级:0 4 Id:1338.1148暂停:0 Teb:7ffd9000   解冻         优先级:0 5 Id:1338.b1c暂停:0 Teb:7ffd7000 Unfrozen         优先级:0 6 Id:1338.f94暂停:0 Teb:7ffd4000 Unfrozen         优先级:0 7 Id:1338.11b4暂停:0 Teb:7ff4f000   解冻         优先级:0 8 Id:1338.1814暂停:0 Teb:7ff4e000   解冻         优先级:0 9 Id:1338.1cc4暂停:0 Teb:7ffdb000   解冻         优先级:0 10 Id:1338.1e48暂停:0 Teb:7ffd5000   解冻         优先级:0 11 Id:1338.1a5c暂停:0 Teb:7ff4c000   解冻         优先级:0 12 Id:1338.1874暂停:0 Teb:7ff4b000   解冻         优先级:0 13 Id:1338.1498暂停:0 Teb:7ff4a000   解冻         优先级:0

这是!analyze -v:

的结果

analyze

2 个答案:

答案 0 :(得分:2)

WinDbg可能正在加载错误版本的mscorwks DLL。尝试使用.cordll -lp明确告诉WinDbg它应该加载哪些CLR调试模块,另请参阅此博客文章:Issues Debugging Managed Code in WinDbg with SOS and PSSCOR2 (e.g. "Failed to request ThreadStore")

答案 1 :(得分:1)

您需要更改传递给'MiniDumpWriteDump'的选项,确保它们包含此处提到的选项:What is minimum MINIDUMP_TYPE set to dump native C++ process that hosts .net component to be able to use !clrstack in windbg