WinDbg の注意事項など
1.プロセスをアタッチしたままWinDbgを終了させると、アタッチしたプロセスごと終了します。
必ず、「Debug」⇒「Detach Debuggee」を実行してから終了する事。
コレ:

2.1度アタッチして、例外でストップさせた場合、デタッチしてもTry~Catch が機能せず、予期せぬ例外としてプロセスが落ちます。
3.コマンドの意味
・SOSファイルの読み込み(コレ必須)
「.NET2の場合」
.load C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\SOS.dll
.loadby sos mscorwks
「.net4の場合」
.load C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\SOS.dll
.loadby sos clr
・アタッチしたプロセスのメモリー調査
!heap -stat -h 0
・指定したサイズの使用場所を特定
!heap -flt s サイズ (例:!heap -flt s 3890)
・メモリーのスタックトレース
!heap -p -a アドレス (例:!heap -p -a 058d5e40)
・アタッチしたプロセスの全アドレスデータ
!heap -p -all
・例外発生時に止める
sxe clr
・例外発生場所の部分スタックトレース
!sos.clrstack
・例外発生時の全体スタックトレース
!sos.dumpstackobjects
・例外メッセージ表示
!sos.pe アドレス (例:!sos.pe 01d70050)
とりあえずこんなもん。
必ず、「Debug」⇒「Detach Debuggee」を実行してから終了する事。
コレ:
2.1度アタッチして、例外でストップさせた場合、デタッチしてもTry~Catch が機能せず、予期せぬ例外としてプロセスが落ちます。
3.コマンドの意味
・SOSファイルの読み込み(コレ必須)
「.NET2の場合」
.load C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\SOS.dll
.loadby sos mscorwks
「.net4の場合」
.load C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\SOS.dll
.loadby sos clr
・アタッチしたプロセスのメモリー調査
!heap -stat -h 0
・指定したサイズの使用場所を特定
!heap -flt s サイズ (例:!heap -flt s 3890)
・メモリーのスタックトレース
!heap -p -a アドレス (例:!heap -p -a 058d5e40)
・アタッチしたプロセスの全アドレスデータ
!heap -p -all
・例外発生時に止める
sxe clr
・例外発生場所の部分スタックトレース
!sos.clrstack
・例外発生時の全体スタックトレース
!sos.dumpstackobjects
・例外メッセージ表示
!sos.pe アドレス (例:!sos.pe 01d70050)
とりあえずこんなもん。
コメント
コメントを投稿