Windowsカーネルデバックの準備(Virtual PC)

  1. Windows XP をメインマシンにします。
    1. メインマシン上に Virtula PC 2004 SP1をインストールします。 http://www.microsoft.com/downloads/ja-jp/details.aspx?FamilyID=6D58729D-DFA8-40BF-AFAF-20BCB7F01CD1
    2. WinDbgをインストールします。 ※今回は 6.11.1404をインストールします。 http://msdn.microsoft.com/en-us/windows/hardware/gg463016.aspx Previous Release version 6.11.1.404 – March 27, 2009 Install 32-bit version 6.11.1.404 [16.9 MB]※  最新バージョンはWindows SDKに含まれます。 SDK(Windows SDK) http://msdn.microsoft.com/ja-jp/windows/hardware/gg463009
  2. メインマシンのVirtual PCにデバックOSをインストールします。
    1. Windows2000Server (Virtual PC)の場合。
      1. インストール後、デバックOSの「c:\Boot.ini」を以下のように書き換えます。 [boot loader] timeout=30 default=multi(0)disk(0)rdisk(0)partition(1)\WINNT [operating systems] multi(0)disk(0)rdisk(0)partition(1)\WINNT=”Microsoft Windows 2000 Server” /fastdetect multi(0)disk(0)rdisk(0)partition(1)\WINNT=”Microsoft Windows 2000 Server” /fastdetect /debugport=com1 /baudrate=57600※ baudrate を早くするとつながらない場合があります
      2. デバックOSシャットダウンします。
    2. Windows XP (Virtual PC) の場合
      1. msconfig にてOSをDebugモードにします。
      2. Boot.INIオプションに以下を入力する。
  3. メインマシン(Windows XP)のシステム環境変数にシンボル情報を設定してダウンロードするようにします。メインマシン(Windows XP)からViertual PC の COMポートの情報を変更します。
    1. フォルダーを作成します。 c:\NTSYMBOL
    2. システムプロパティの環境変数に以下の値を設定します。 変数名=「_NT_SYMBOL_PATH」 編数値=「srv*c:\NTSYMBOL*http://msdl.microsoft.com/download/symbols」


  4. 名前付きパイプ=「\\.\pipe\com1
  5. メインマシン(Windows XP)からDosコマンドで以下を入力してWindbguを起動します。
    >C:\WinDDK\7600.16385.1\Debuggers\windbg.exe -k com:port=\\.\pipe\com1,pipe

    ※もしくはWinDbg画面をメニューから起動して以下の操作をする。 メニュー「File」-[Kernel Debug] [COM]タブにて Pipe=チェック, Reconect=チェック, Baud Rate=57600, Port=\\.\pipe\com1

  6. Virtual PCのデバックOSを起動します。

  7. メインマシンのWinDbgに以下の画面が起動されたら成功です。
  8. 他に自作したDDKプログラム(sys, exe等)があって、デバックしたい場合はWinDbgのメニューからpdbフォルダーのパスを通してください。bpコマンドでブレークポイントを設定するとそのプログラムのソースデバックも可能になります。
    1. pdbにexeとのバージョン確認情報やプログラムソース位置情報がありますので、ソースの位置を変更しないでください、また、プログラムソースとpdbとexeのバージョンが異なるとうまく動作しませんので注意してください。
    2. パスを追加する方法WinDbgのメニューから[File]-[Symbol File Path]複数指定する場合はセミコロン(;)で仕切ってください

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です