!clrstack从不报告任何事情

时间:2016-08-12 19:04:24

标签: debugging clr windbg sos sosex

我知道我正在处理托管线程,但我从未设法让!clrstack工作。我总是得到:

0:000> !clrstack
OS Thread Id: 0xaabb (0)
Child SP       IP Call Site
GetFrameContext failed: 1
00000000 00000000 

不可否认,我可以使用!dumpstack,但我无法弄清楚如何让它显示参数。它仅显示ChildEBP,返回地址和函数名称。除了混合托管和非托管呼叫之外,我还只关注托管部分。

更新

根据Thomas的要求,!clrstack -i返回:

0:000> !clrstack -i
Loaded c:\cache\mscordbi.dll\53489464110000\mscordbi.dll
Loaded c:\cache\mscordacwks_x86_x86_4.0.30319.34209.dll\5348961E69d000\mscordacwks_x86_x86_4.0.30319.34209.dll



Dumping managed stack and managed variables using ICorDebug.
=================================================================
Child SP IP       Call Site
003ad0bc 77d1f8e1 [NativeStackFrame]
Stack walk complete.

它的进展: - )

1 个答案:

答案 0 :(得分:0)

请发布!dumpstack或k的输出来仔细检查callstack,你知道!clrstack只显示托管代码调用堆栈,但是有时,如果托管线程完成了这项工作,它将在CLR代码中等待(信号量)如果你使用线程池,并且剩余调用堆栈变得完全不受管理,则调用stack.so!clrstack不显示任何内容。