ごみばこ

プログラムに関する備忘録などを書いています。

Windbgの簡単な使い方

デバッグといえばNew Game!の桜ねねちゃん。
事細かにメモがされていて、アルバイトなのかと疑う…。

今回はWindbgについてのメモ。
あまり使ったことない+触り立てということで
大したものは書けません。


今回は簡単なアプリケーションのライブデバッグについて。
使用するコードは以下。

try
{
    int[] intArray = new int[3];
    intArray[4] = 0;

}
catch (Exception)
{
    MessageBox.Show("Caused Error !");
}

私はフォーム内にボタンを配置してクリックイベントに書きました。
ここは適当で大丈夫です。
f:id:choco_0214:20160827005622p:plain
ビルドしてexeを起動します。

ボタンをクリックするとExceptionが発生するため、
メッセージボックスが表示されます。
f:id:choco_0214:20160827005804p:plain

この状態でWindbg内でF6キーを押しましょう。
するとAttach to Processが起動されます。
f:id:choco_0214:20160827010902p:plain
後に起動したものほど下の方に表示されるのでEndで下までスクロールします。

作成したexeのプロセスIDを見つけたら選択してOKを押しましょう。
すると新しいウインドウが開かれると思います。

ウインドウの下部にコマンド入力欄があるので次のコマンドを入力。
[.loadby sos clr]
これによりsos.dllがロードされます。
因みに.NET4以前の場合はclrをmscorwksに変更します。

sos.dllがきちんとロードされているかは!chainで確認できます。
インストールされていることが確認出来れば
!threads -liveと入力してみましょう。

IDやら何やらが表示されていれば問題なく実行出来ています。
続きは次の記事で・・・・