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

本文关键字:Minidump 转储 崩溃 何打开 | 更新日期: 2023-09-27 18:05:13

我们的c#应用程序在一个未处理的异常时调用MinidumpWriteDump

我从用户那里收到了一些崩溃转储,我似乎无法用SOS打开崩溃转储并看到导致崩溃的异常。

我们要获取的转储类型是 minidumpwithprivatereadwritemmemory

我将_NT_SYMBOL_PATH配置为使用MS公共符号服务器,当在WinDBG中调试此崩溃转储时,它会自动下载所需的dll(因为此转储是在具有不同版本的。net 2的机器上获取的-即以。3053结尾的机器)

当运行!线程时,我得到这样的输出:

请求ThreadStore失败

我已经浏览了所有可能的网站,这些网站解释了处理不同版本的CLR的技术,而不是在转储机器中获取的技术,没有一个适合我。

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

我们是否做错了什么(从。net进程中获取错误类型的转储,等等)

编辑:

下面是~*:

的结果

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

下面是!analyze -v:

的结果分析

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

WinDbg可能加载了错误版本的mscorwks DLL。尝试使用.cordll -lp显式地告诉WinDbg它应该加载哪些CLR调试模块,参见这篇博客文章:在使用SOS和PSSCOR2的WinDbg中调试托管代码的问题。"请求ThreadStore失败")

你需要改变你传递给'MiniDumpWriteDump'的选项,确保它们包含这里提到的选项:最小MINIDUMP_TYPE设置是什么来转储本地c++进程,宿主。net组件能够在windbg中使用!