如何使用WinDBG列出所有托管线程的调用堆栈?

sar*_*rat 28 .net c# windbg crash-dumps

我有一个托管应用程序创建的转储.我正在使用SOS/SOSEX扩展来简化我的转储分析.我想像~*kb使用本机应用程序一样列出所有托管线程的调用堆栈.我们怎么做?

Jus*_*tin 44

使用 !EEStack命令:

0:007> .load sos
0:007> !EEStack
Run Code Online (Sandbox Code Playgroud)

请参阅SOS.dll(SOS调试扩展)

  • .loadby sos clr更好(适用于.NET 4)或.loadby sos mscorwks (4认同)
  • 对于.net 4我下载了.net 4版本的sos,Psscor4 http://www.microsoft.com/en-gb/download/details.aspx?id=21255,将dll放入windbg文件夹 - 匹配正确dll使用正确的windbg版本(32位| 64位)然后加载`.load Psscor4.dll` (2认同)

Vad*_*kan 27

此命令将转储所有托管线程

~*e!dumpstack
Run Code Online (Sandbox Code Playgroud)

  • 或者 `~*e!clrstack` (3认同)

小智 8

使用sosex,使用〜*e!mk(〜 - thread,* - all,e - 执行此命令,!mk - 显示托管堆栈.sosex中的大多数命令镜像本机命令,但是m(托管)在他们面前.