-1

管理されたスレッドを扱っていることは知っていますが、うまく機能したことはありません!clrstack。私はいつも得る:

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

確かに使用でき!dumpstackましたが、引数を表示する方法がわかりません。ChildEBP、Return Address、および関数名のみが表示されます。また、管理された呼び出しと管理されていない呼び出しが混在しているため、管理された部分のみに焦点を当てたいと思います。

アップデート

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.

その進行状況:-)

4

1 に答える 1

0

!dumpstack または k からの出力を投稿してコールスタックを再確認してください。!clrstack はマネージ コードのコール スタックのみを表示することがわかっていますが、マネージ スレッドがこの作業を終了した場合、CLR コード (セマフォ) で待機することがあります。スレッドプールを使用すると、残りのコールスタックは完全に管理されていないコールスタックになります。そのため、 !clrstack は何も表示しません。

于 2016-08-15T11:02:52.940 に答える