我们的C#应用程序对未处理的异常调用MinidumpWriteDump。
我从用户那里收到了一些崩溃转储,在这些用户看来,我无法使用SOS打开崩溃转储,并看到导致崩溃的异常。
我们使用的转储类型是MiniDumpWithPrivateReadWriteMemory
我的_NT_SYMBOL_PATH配置为使用MS公共符号服务器,当在WinDBG中调试此崩溃转储时,它会自动下载所需的DLL(因为此转储是在具有不同版本的.NET 2的机器上进行的,即以.3053结束的)。
在运行!线程时,我将得到以下输出:
未能请求ThreadStore
我已经浏览了所有可能的站点,这些站点解释了处理不同版本CLR的技术,而不是在转储机器中使用的技术,没有一个为我工作。
我能做些什么来调试这些崩溃呢?
我们是不是做错了什么(从.NET进程中获取错误的转储,等等)
编辑:
这是~*的结果
0:000> ~* .1338.258暂停:1338.258 Teb: 7ffdf 000未冻结优先级:0 1ID: 1338.2a0暂停:0 Teb: 7ffde000未冻结优先级:0 2ID: 1338.1fd4暂停:0 Teb: 7ffdd000未冻结优先级:0 3ID: 1338.17e8暂停:0 Teb: 7ffda 000未冻结优先级:0 Id: 1338.1148 :0 Teb: 7ffdun冷冻优先级:0 5ID: 1338.b1c暂停:0 Teb: 7ffd7000未冻结优先级: 1338.1814 .6 Id: 1338.f 94暂停:0 Teb: 7ffd 4000未冻结优先级:0 7 Id: 1338.11b4暂停:0 Teb: 7ff4f000:1338.1a5c暂停:0 Teb: 7ff4c000解冻优先级: 1338.1874 12 Id: 1338.1874暂停:0 Teb: 7ff4b000未冻结优先级:0 13 Id: 1338.1498暂停:0 Teb: 7ff4a000未冻结优先级:0
下面是分析-v的结果:
分析
发布于 2011-08-10 14:27:13
WinDbg可能加载错版本的mscorwks。尝试使用.cordll -lp显式地告诉WinDbg它应该加载哪些CLR调试模块,也请参阅下面的博客文章:使用SOS和PSSCOR2在WinDbg中调试托管代码(例如:“未能请求ThreadStore")
发布于 2011-11-25 13:15:00
您需要更改传递给“MiniDumpWriteDump”的选项,确保它们包含这里提到的选项:类型设置为转储承载C++组件的本机.net进程,以便能够在windbg中使用!clr堆栈。
https://stackoverflow.com/questions/6997901
复制相似问题