WinDBG によるデバッグ方法(ダイジェスト)

Visual Studio のプロジェクトが存在せず、nmake や cl などを使ってビルドされる C/C++ プログラムをデバッグしようとして、いろいろ困ったのでメモ。


1. WinDBG のインストール

Windows SDK をインストールすれば一緒に入ってくる。

2. プログラムは /Zi オプション付きでコンパイルする。(デバッグ情報が .pdb ファイルとして生成される)

3. WinDBG を起動し、File > Open Source File ... でとりあえず main 関数のあるソースファイルを開く

4. File > Symbol File Path ... で .pdb ファイルのあるディレクトリを指定

5. File > Open Executable ... でデバッグ対象の .exe ファイルを開く。この時、ファイルオープンダイアログの左下にコマンドラインオプションや実行時ディレクトリを指定できる。

6. Locals(ローカル変数のウォッチ)、Calls(コールスタック)、Watch、Command などいろいろなビューを開きまくる。ワークスペースを保存しておくと後で嬉しいかも。

7. Command ウインドウで以下のようなコマンドでとりあえず頑張る
bp ブレークポイントを設定。何はともあれ bp main
Debug > Resolve Unqualified Symbols にチェックを入れておいたほうがよいかも
g で実行開始
p で step over
t で step in
ソースウインドウで F9 (Breakpoint 設定) / F10 (Step Over) / F11 (Step In) でもよいかも


8. コマンドラインオプションを変えて起動し直したい(ブレークポイントやウォッチ式などはそのまま残したい)場合や起動時ディレクトリを変えたい場合は、g コマンドなどでプログラムをいったん終了させるか .kill コマンドで強制終了させてから .createdir や .create を使用する。


とここまで頑張ったけど、Visual Studio で快適にデバッグできる方法があったりして・・・ガクブル


pykd とか mona.py を使うための布石だもんね・・・(強がり)