Debugging !clrstack从不报告任何事情

Debugging !clrstack从不报告任何事情,debugging,clr,windbg,sos,sosex,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、返回地址和函数名。此外,它混合了托管和非托管调用,我只想关注托管部分 更新 按照托马

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

0:000> !clrstack
OS Thread Id: 0xaabb (0)
Child SP       IP Call Site
GetFrameContext failed: 1
00000000 00000000 
诚然,我可以使用
!dumpstack
但我不知道如何让它显示参数。它只显示ChildEBP、返回地址和函数名。此外,它混合了托管和非托管调用,我只想关注托管部分

更新

按照托马斯的要求,
!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.

其进度:-)

请发布来自的输出!dumpstack或k来双重检查调用堆栈,您知道!clrstack只显示托管代码调用堆栈,但是有时候,如果托管线程完成了这项工作,如果使用线程池,它将在CLR代码(信号量)中等待,剩余的调用堆栈将变成完全非托管调用堆栈。所以!clrstack对此没有显示任何内容。

Related:Related:@ThomasWeller第一个链接指向第二个链接,我在任何地方都看不到好的解决方案。我确实有sosex,而且已经加载了它。这对我有帮助吗?我也看不到一个很好的解释,错误到底意味着什么,它从哪里来,以及如何真正解决它。这就是为什么我写了“相关”而没有标记为重复。SOSex
!mk
可能有效,但与
有相同的问题!dumpstack
:它还打印本机部件。但是
的输出!如果我没记错的话,mk
会更好。甚至可以编写PyKd脚本来过滤本机部件,以便只保留托管部件。我可以随意添加SOS和SOSex标签。也许史蒂夫·约翰逊(SOSex的作者)有一个很好的答案。他肯定是在追随SOSex的标签