2 台の PC を USB デバッグケーブルで接続してカーネルデバッグする方法 (Windows)
以前、「WinDbg のカーネルデバッグで使える USB 3.0 ケーブルを秋葉原で買った部品で作る」という記事を書きました。今回は、その USB ケーブルで 2 台の PC を接続し、WinDbg でカーネルデバッグを開始するまでの手順を記述します。ただし、詳細は環境によって差異があると思います。一例としてご覧ください。
動作確認環境
- Dell Inspiron 13 5390(2019 年購入), Windows 11 Home 24H2
- Dell Inspiron 13 7370(2018 年購入), Windows 11 Home 23H2
デバッグされる側の設定 #1 : USB デバッグケーブルの接続
デバッグされる側の PC は、2019 年に購入した Dell のノートパソコン Inspiron 13 です。
まず、この PC の USB ポートがカーネルデバッグに対応しているかを調べます。
インターネットからマイクロソフトの USBView (USB Device Viewer) をダウンロードし、実行します。

表示される各ポートの中から、次の条件を満たしているものを探します。
Is Port User Connectable: yes // ユーザーが USB 機器を接続可能
Is Port Debug Capable: yes // デバッグ可能
Protocols Supported:
USB 3.0: yes // USB 3.0
この PC では、[Port13] と [Port16] が該当していました。

[Port13] や [Port16] の物理的な場所を調べるため、USB 3.0 対応の USB メモリ (ELECOM MF-FCU3016GRD) を本体右側の USB ポートに挿してみます。すると、[Port13] 項に「USB 大容量記憶装置」と表示されました。

このポートを使うことにしましょう。USB メモリを抜いて、USB デバッグケーブルを挿します。

なお、USB デバッグケーブルを挿しても USBView やデバイスマネージャーには何も現れませんでした。
デバッグされる側の設定 #2 : BitLocker の回復キー取得
デバッグされる側の本 PC は、BitLocker が有効になっています。あとで必要になるため、BitLocker の回復キー(パスワード)を取得しておきます。
回復キー(パスワード)の取得方法はいくつかあるようですが、ローカルアカウントで使っている本 PC では、管理者権限のコマンドプロンプトを開き、次のコマンドを実行することで取得できました(以下の * は伏字です)。
C:\> manage-bde.exe -protectors -get c:
BitLocker ドライブ暗号化: 構成ツール Version 10.0.26100
Copyright (C) 2013 Microsoft Corporation. All rights reserved.
ボリューム C: [OS]
すべてのキーの保護機能
TPM:
ID: {DCF7****-A6**-49**-A6**-28D62D******}
PCR 検証プロファイル:
7, 11
(整合性の検証のためにセキュア ブートを使用)
数字パスワード:
ID: {0F24****-15**-4B**-9E**-A7C7FF******}
パスワード:
294***-166***-313***-140***-658***-368***-637***-321***
バックアップの種類:
Microsoft アカウント バックアップ
ファイルに保存
印刷済
「パスワード:」の次の行にある「6 桁 x 8 組 = 48 桁」の数字が回復キー(パスワード)です。紙に書き留めておくか、印刷するか、写真を撮っておきましょう。
デバッグされる側の設定 #3 : カーネルデバッグの有効化
続いて、OS の設定を変更してカーネルデバッグを有効にします。
管理者権限のコマンドプロンプトから、次のコマンドを実行します。
C:\> bcdedit /debug on
デバッガーの設定を修正中にエラーが発生しました。
この値はセキュア ブート ポリシーによって保護されているため、変更または削除できません。
セキュアブートが有効になっているのでカーネルデバッグを有効化できないというエラーメッセージが表示されてしまいました。セキュアブートを無効にしましょう。
PC の電源を切り、電源を入れると同時に [F12] キーを連打し、BIOS(UEFI) の画面に入ります(押下するキーは PC のメーカーや機種によって異なります)。そして、設定項目から「Secure Boot」を探し、「OFF」にします。

PC を再起動すると、BitLocker 回復画面が現れます。ここで、さきほど調べておいた数字 48 桁の回復キー(パスワード)を入力します。

Windows が起動したら、管理者権限のコマンドプロンプトから、カーネルデバッグを有効にするためのコマンドを再実行します。
C:\> bcdedit /debug on
この操作を正しく終了しました。
今度は正常終了しました。
設定変更されたことを確認します。
C:\> bcdedit
Windows ブート マネージャー
--------------------------------
identifier {bootmgr}
device partition=\Device\HarddiskVolume1
<中略>
Windows ブート ローダー
--------------------------------
identifier {current}
device partition=C:
path \WINDOWS\system32\winload.efi
<中略>
bootstatuspolicy DisplayAllFailures
hypervisorlaunchtype Auto
debug Yes
最終行の「debug Yes」が、カーネルデバッグが有効になったことを示しています。
続いて、LAN や COM ポートではなく USB ポートでデバッグすることを指示します。targetname: に続く文字列は任意ですが、debug という単語を含めてはいけないとのこと。
C:\> bcdedit /dbgsettings usb targetname:usb3
この操作を正しく終了しました。
設定変更されたことを確認します。
C:\> bcdedit /dbgsettings
targetname usb3
debugtype USB
isolatedcontext Yes
この操作を正しく終了しました。
USB に設定されたようです。
PC を再起動し、BitLocker 回復画面でもう一度回復キー(パスワード)を入力し、Windows が起動したら準備完了です。
マイクロソフトのサイト [1] には、bcdedit/set “{dbgsettings}” busparams コマンドで、デバッグに使用する xHCI コントローラのバス、デバイス、ファンクション番号を設定するよう書いてありましたが、本 PC では必要ありませんでした。
デバッグする側の設定 #1 : USB デバッグケーブルの接続
デバッグする側の PC は、2018 年に購入した Dell のノートパソコン Inspiron 13 です。
空いている USB 3.0 ポート(デバッグされる側と違い「Is Port Debug Capable: yes」である必要はない)に、USB デバッグケーブルの反対側を挿します。

デバイスマネージャーに「USB Debug Connection Device」が現れました。

デバッグする側の設定 #2 : WinDbg のインストール
デバッガとして WinDbg をインストールします。
WinDbg は Windows SDK の一部として入手するものだと思っていましたが、最近は winget コマンドで直接入手できるとのこと。コマンドプロンプトを開き、次のコマンドを入力します。
C:\> winget install Microsoft.WinDbg
'msstore' ソースでは、使用する前に次の契約を表示する必要があります。
Terms of Transaction: https://aka.ms/microsoft-store-terms-of-transaction
ソースが正常に機能するには、現在のマシンの 2 文字の地理的リージョンをバックエンド サービスに送信する必要があります (例: "US")。
すべてのソース契約条件に同意しますか?
[Y] はい [N] いいえ: y
見つかりました WinDbg [Microsoft.WinDbg] バージョン 1.2502.25002.0
このアプリケーションは所有者からライセンス供与されます。
Microsoft はサードパーティのパッケージに対して責任を負わず、ライセンスも付与しません。
インストーラーハッシュが正常に検証されました
パッケージのインストールを開始しています...
100%
インストールが完了しました
スタートメニューに WinDbg が現れました。

デバッグする側の設定 #3 : WinDbg によるアタッチ
WinDbg を起動し、[ファイル]メニューから「Attach to kernel」を選択し、右側の USB タブにてターゲット名(デバッグされる側にて「bcdedit /dbgsettings」で登録した名前)を入力し、[Break on connection] をチェックし、[OK] ボタンを押します。

すると、次のエラーが発生しました。
<前略>
Microsoft (R) Windows Debugger Version 10.0.27793.1000 AMD64
Copyright (c) Microsoft Corporation. All rights reserved.
Using USB for debugging
Failed to copy USB device driver inf. The debugger must be run elevated for the first use of this transport. Error 0x5.
Waiting to reconnect...
アクセス拒否のエラー(Error 0x5)です。初めて USB デバッグを行う場合は管理者権限で実行する必要がある旨書いてあります。
管理者権限で WinDbg を起動し直し、再度アタッチします。
<前略>
Microsoft (R) Windows Debugger Version 10.0.27793.1000 AMD64
Copyright (c) Microsoft Corporation. All rights reserved.
Using USB for debugging
Waiting to reconnect...
USB: Write opened
Connected to Windows 10 26100 x64 target at (*** *** ** **:**:**.*** 2025 (UTC + 9:00)), ptr64 TRUE
Kernel Debugger connection established. (Initial Breakpoint requested)
<中略>
*******************************************************************************
* *
* You are seeing this message because you pressed either *
* CTRL+C (if you run console kernel debugger) or, *
* CTRL+BREAK (if you run GUI kernel debugger), *
* on your debugger machine's keyboard. *
* *
* THIS IS NOT A BUG OR A SYSTEM CRASH *
* *
* If you did not intend to break into the debugger, press the "g" key, then *
* press the "Enter" key now. This message might immediately reappear. If it *
* does, press "g" and "Enter" again. *
* *
*******************************************************************************
nt!DbgBreakPointWithStatus:
fffff801`77cb8af0 cc int 3
今度はアタッチに成功しました。これで、デバッグされる側の OS の中身が参照できます。
以下は、「!process 0 1 winlogon.exe」コマンドで相手の winlogon.exe プロセスの情報を表示しているところです。

各種 WinDbg コマンドの説明は本稿の趣旨ではないため省略します。
作業が終わったら「.detach」コマンドでデバッガを切り離してください。
デバッグされる側の設定を元に戻す
デバッグ終了後、デバッグされる側の PC の設定は、以下の手順で戻しました。
まず、USB ポートからデバッグケーブルを抜きます。
そして、管理者権限のコマンドプロンプトから次のコマンドを入力して、カーネルデバッグを無効化します。
C:\> bcdedit /debug off
この操作を正しく終了しました。
PC を再起動し BIOS(UEFI) の画面に入り、「Secure Boot」の設定を「ON」に戻します。
もう一度再起動し、BitLocker 回復画面が現れるので回復キー(パスワード)を入力します。
以上で、普通に Windows が起動するようになりました。これ以降は BitLocker 回復画面は現れませんでした。
おわりに
USB 3.0 デバッグケーブルを使ってカーネルデバッグする際の PC の設定について書いてきました。LAN でデバッグしたり VM でデバッグしたりする方法もあるため、USB のニーズがどれだけあるのかわかりませんが、情報が少ないので参考になればと思います。
参考文献
[1] マイクロソフト「USB 3.0 xHCI カーネル モード デバッグの設定」
https://learn.microsoft.com/ja-jp/windows-hardware/drivers/debugger/setting-up-a-usb-3-0-debug-cable-connection
[2] すらりん日記「Windows10 (AU) で USB 3.0 経由でカーネルデバッグ」
https://blog.techlab-xe.net/post-4752/