シリアルケーブルで接続する時はホストPCとターゲットPCは1対1で接続する必要があったが、
ネットワークケーブルの場合は、1台のホストPCに複数台のターゲットPCを接続出来るので非常に便利。
[環境]
192.168.20.1 ホストPC(WinDbgインストール済)
192.168.20.2 ターゲットPC(デバッグされる側)
上記2台をLANケーブルで直接接続。
<対応しているNIC一覧>
Supported Ethernet NICs for Network Kernel Debugging in Windows 8
ちなみに、vendor IDとdevice IDは対象NICのアダプタのプロパティから確認出来る。
vender ID : VEN_XXXのXXX部 (下図の例だと"10EC" ⇒Realtek)
device ID : DEV_YYYのYYY部 (下図の例だと"8136")
[手順]
1. ホストPCのIP アドレスを確認
今回の環境だと192.168.20.1。
2. ホストPCとターゲットPC間のデバッグポートを決定(範囲は49152-65535)
今回は50000とした。
3. ターゲットPCに対してデバッグ設定を実施
ターゲットPC上でコマンドプロンプトを管理者権限で起動し、以下のコマンドを実行する。
bcdedit /debug on
bcdedit /dbgsettings net hostip:w.x.y.z port:n
/dbgsettingsオプションのhostipはホストPCのIPアドレス(192.168.20.1)、portは2で決定したポート番号(50000)を指定する。
設定完了時にKey情報が生成されるが、これは後述するデバッグセッション開始時にホストPC側で使用する。
(注意1)
デバッガの設定時に以下のエラーが発生する場合は、セキュアブートを無効化する必要あり。
以下の記事を参考に。
<セキュアブートを無効にする方法>
<Windows 8 で BIOS セットアップを表示させたい> ※恥かしながら知りませんでした。。
(注意2)
ターゲットPC上で複数のネットワークアダプターが存在する場合、
以下のコマンドでbusparmsのb.d.fにデバッグ接続に使用するアダプターのPCI bus、device、function番号を指定する。
bcdedit /set {dbgsettings} busparams b.d.f
PCI bus、device、function番号についてはデバイスマネージャーで対象アダプタ-のプロパティより確認できる。下図の例だと、「busparams 4.0.0」となる。
4. ホストPC からデバッグセッションを開始する
Windbgを起動し、2で決定したポート番号(50000)と3で生成されたキー情報を入力し、[Kernel Debug]を実行する。
5. ターゲットPCを再起動する
デバッガ上でブレークインできれば接続完了・・・のはずが出来ないなぁ。。
PC依存?別PCが用意出来たらTryしてみます。
[参考資料]
・ネットワークケーブルを用いたカーネルデバッグ接続の設定手順
・Setting Up Kernel-Mode Debugging over a Network Cable Manually
0 件のコメント:
コメントを投稿