6

Adplus経由でプロセスを添付しました(IISでWebサイトを実行しました)

C:\Program Files (x86)\Debugging Tools for Windows (x86)>ADPlus -crash -pn w3wp .exe -o C:\dumps

以下は、その Web サイトの stackoverflow 例外を再現するコードです。

protected void Page_Load(object sender, EventArgs e)
{

}
public void Hello()
{
    Hello();
}

protected void Button_Test_Click(object sender, EventArgs e)
{
    Hello();
}

私のために作成されたダンプは次の場所にありました:

C:\Dumps\Crash_Mode__Date_05-04-2012__Time_21-44-2020\PID-12452__W3WP.EXE_DefaultAppPool__1st_chance_Process_Shut_Down__full_2bc0_2012-05-04_21-45-53-704_30a4

このダンプをwindbgで開き、これらのコマンドを実行しました

0:000> .loadby sos clr
0:000> !clrstack

そして、私は次のメッセージを受け取りました

Unable to walk the managed stack. The current thread is likely not a 
managed thread. You can run !threads to get a list of managed threads in
the process

修正するのを手伝ってもらえますか? エラーの場所を追跡するにはどうすればよいですか?

4

4 に答える 4

9

これにより、各スレッドのスタック トレースが返されます。管理されているスレッドのスタック トレースを確認できます。 ~*e !clrstack

于 2014-05-05T15:22:06.643 に答える
6

!pe を入力して例外を取得するか、~#s を入力して障害のあるスレッドに切り替えることができます。!clrstack が動作するはずです。

于 2012-05-07T22:25:31.280 に答える
2

Remus が指摘したように、現在のスレッドはマネージド スレッドではありません。~ on windbg でスレッドのリストが表示されます。よく見ると (モニターの調子が悪いのでさらに悪化しました :P) . (ドット) 現在のスレッドの前。これをマネージド スレッドに変更する必要があります。これは ~s で実行できます。

ここで、デバッグの第一人者に助けを求めることにします - どのスレッドがマネージ スレッドであるかを見つける方法は? 私は同僚から、一般的にスレッド 0 は管理対象であると言われ、この質問まで逃げることができました :|

于 2012-11-16T00:19:16.453 に答える