次の方法で共有


USB 3.0 xHCI カーネル モード デバッグの設定 (KDUSB xHCI-DBC USB 3.0)

Windows用Debugging Toolsは、USB 3.0ケーブル経由でのカーネルモードデバッグをサポートしています。 この記事では、USB 3.0デバッグを手動でセットアップする方法について説明します。

デバッガを実行するコンピューターは ホスト コンピューターと呼ばれ、デバッグ対象のコンピューターは ターゲット コンピューターと呼ばれます。

USB 3.0ケーブルでのデバッグには、以下のハードウェアが必要です:

  • ホスト・コンピュータ上のxHCI(USB 3.0)ホスト・コントローラ
  • ターゲット・コンピュータでは、デバッグをサポートするxHCI(USB 3.0)ホスト・コントローラ
  • ターゲット コンピューターの USB ホスト コントローラーは、Intel xHCI デバッグ機能インターフェイス (DBC) をサポートする必要があります。 詳細については、Intel Web サイトで入手できる xHCI 仕様を参照してください。

ケーブルの要件

  • オレンジ色の Microsoft USB デバッグ ケーブル。これは、2 つのオス型 A プラグと Vbus 接続がない A-A クロスオーバー ケーブルです。 このケーブルは、DataPro - USB 3.0 Super-Speed A/A デバッグ ケーブルなどのベンダーから入手できます

トラブルシューティングを簡素化するため、ハブやドッキング・ステーションを避けて、ターゲット・コンピュータとホスト・コンピュータの間にケーブルを直接接続してください。

バイナリ トランスポート ファイル

kdstub.dllは、KDUSB xHCI-DBC USB 3.0 デバッガー トランスポートをサポートするために使用されます。

ターゲット コンピューターを設定する

  1. ターゲットコンピュータで、UsbViewツールを起動します。 UsbViewツールはWindows用のデバッグツールに含まれています。 x64 システムの場合、UsbView は C:\Program Files (x86)\Windows Kits\10\Tools\kitversion\x64\usbview.exe にあります。

  2. UsbViewで、全てのxHCIホストコントローラを探します。

  3. UsbViewで、xHCIホストコントローラのノードを展開します。 ホストコントローラのポートがデバッグをサポートしているという表示を探します。

    [Port1]
    
    Is Port User Connectable:         yes
    Is Port Debug Capable:            yes
    Companion Port Number:            3
    Companion Hub Symbolic Link Name: USB#ROOT_HUB30#5&32bab638&0&0#{...}
    Protocols Supported:
     USB 1.1:                         no
     USB 2.0:                         no
     USB 3.0:                         yes
    
  4. デバッグに使用するxHCIコントローラのバス、デバイス、ファンクション番号をメモしておきます。 UsbViewはこれらの番号を表示します。 以下の例では、バス番号は48、デバイス番号は0、ファンクション番号は0です。

    USB xHCI Compliant Host Controller
    ...
    DriverKey: {36fc9e60-c465-11cf-8056-444553540000}\0020
    ...
    Bus.Device.Function (in decimal): 48.0.0
    
  5. デバッグをサポートするxHCIコントローラを特定したら、次のステップはxHCIコントローラのポートに関連する物理的なUSBコネクタを見つけることです。 物理コネクタを見つけるには、USB 3.0デバイスをターゲットコンピュータのUSBコネクタに接続します。 UsbViewをリフレッシュして、デバイスの位置を確認します。 UsbViewでデバイスが選択したxHCIホストコントローラに接続されていると表示されれば、USB 3.0デバッグに使用できる物理USBコネクタが見つかったことになります。

重要

bcdeditを使用してブート情報を変更する前に、テスト PC 上で BitLocker や Secure Boot などの Windows セキュリティ機能を一時的に停止する必要があるかもしれません。 テストが完了したらこれらのセキュリティ機能を再度有効にし、セキュリティ機能が無効になっている場合はテストPCを適切に管理します。

  1. ターゲットコンピュータで、コマンドプロンプトウィンドウを管理者として開き、以下のコマンドを入力します:

    bcdedit /debug on
    bcdedit /dbgsettings usb targetname:<TargetName>
    

    TargetName は、ターゲット・コンピュータ用に作成した名前です。 TargetNameは、ターゲットコンピュータの正式な名前である必要はなく、以下の制限を満たす限り、任意の文字列を使用できます:

    • 文字列は、大文字と小文字の組み合わせを問わず、TargetName のどこにも「debug」を含んではならない。 例えば、TargetNameのどこかに "DeBuG "や "DEBUG "を使用すると、デバッグが正しく動作しません。
    • 文字列に使用できる文字は、ハイフン(-)、アンダースコア(_)、数字の0~9、アルファベットのA~Z(大文字または小文字)のみです。
    • 文字列の長さは最大で 24 文字です。
  2. デバイスマネージャで、デバッグに使用するUSBコントローラを探します。 GeneralタブのLocationの下に、バス番号、デバイス番号、ファンクション番号が表示されます。 次のコマンドを入力します。

    bcdedit /set "{dbgsettings}" busparams <b.d.f>
    

    B, d, およびfはUSBホストコントローラのバス番号、デバイス番号、ファンクション番号です。 bus、device、function の番号は 10 進形式である必要があります。

    例:

    bcdedit /set "{dbgsettings}" busparams 48.0.0
    
  3. ターゲット コンピューターを再起動します。

電源管理を無効にする

場合によっては、電源の移行がUSB 3.0でのデバッグを妨害することがあります。 このような問題を回避するには、デバッグに使用するxHCIホストコントローラとそのルートハブの選択的サスペンドを無効にします。

  1. デバイスマネージャで、xHCIホストコントローラのノードに移動します。 ノードを右クリックし、Propertiesを選択します。 [電源管理]タブがある場合は、そのタブを開き、[電力を節約するためにコンピュータがこのデバイスの電源を切ることを許可する]チェックボックスをオフにします。

  2. デバイスマネージャで、xHCIホストコントローラのルートハブのノードに移動します。 ノードを右クリックし、Propertiesを選択します。 [電源管理]タブがある場合は、そのタブを開き、[電力を節約するためにコンピュータがこのデバイスの電源を切ることを許可する]チェックボックスをオフにします。

xHCIホストコントローラをデバッグに使用し終わったら、xHCIホストコントローラの選択的サスペンドを再度有効にします。

初めてデバッグセッションを開始する

  1. ホストコンピュータとターゲットコンピュータのデバッグ用に選択したUSB 3.0ポートにUSB 3.0デバッグケーブルを接続します。
  2. ホストコンピュータ上で実行されている Windows のビット数 (32 ビットまたは 64 ビット) を決定する。
  3. ホストコンピュータで、ホストコンピュータで実行されているWindowsのビットサイズに合ったバージョンのWinDbgを(管理者として)開きます。 例えば、ホスト・コンピュータがWindowsの64ビット・バージョンを実行している場合、64ビット・バージョンのWinDbgをAdministratorとして開きます。
  4. File メニューの Kernel Debug を選択します。 [カーネル デバッグ] ダイアログ ボックスで、[USB] タブを開きます。ターゲット コンピュータのセットアップ時に作成したターゲット名を入力します。 OK をクリックします。

この時点で、USBデバッグドライバがホストコンピュータにインストールされます。このため、WinDbgのビッ トネスをWindowsのビットネスに合わせることが重要です。 USB デバッグ ドライバーをインストールすると、以降のデバッグ セッションで WinDbg の 32 ビット バージョンまたは 64 ビット バージョンを使用できます。

デバッグ セッションを開始する

WinDbg の使用

ホスト コンピューターで WinDbg を開きます。 [ファイル] メニューの [カーネル デバッグ] を選択します。 [カーネル デバッグ] ダイアログ ボックスで、[USB] タブを開きます。ターゲット コンピュータのセットアップ時に作成したターゲット名を入力します。 [OK] を選択します。

コマンド プロンプト ウィンドウに次のコマンドを入力して、WinDbg とのセッションを開始することもできます。TargetName は、ターゲット コンピューターのセットアップ時に作成したターゲット名です。

windbg /k usb:targetname=<TargetName>

KD の使用

ホスト コンピュータでコマンド プロンプト ウィンドウを開き、次のコマンドを入力します。TargetName は、ターゲット コンピュータのセットアップ時に作成したターゲット名です。

kd /k usb:targetname=<TargetName>

ターゲット コンピューターを再起動する

デバッガーが接続されたら、ターゲット コンピューターを再起動します。 PCを再起動する1つの方法は、管理者のコマンドプロンプトからshutdown -r -t 0コマンドを使用することです。

ターゲット PC を再起動したら、デバッガーは自動的に接続されます。

トラブルシューティング

USBデバイスが認識されない

デバッグ・ケーブルを挿入したときに、USBデバイスが認識されないというテキストでホスト上にウィンドウズ通知が表示される場合、既知のUSB 3.1と3.1の互換性の問題が発生している可能性があります。 この問題は、デバッグ・ケーブルがホスト上のUSB 3.1コントローラとターゲット上のIntel(Ice LakeまたはTiger Lake)3.1 USBコントローラに接続されている場合のデバッグ・コンフィギュレーションに影響します。

詳細およびプロセッサー・モデルのリストについては、Ice Lake(マイクロプロセッサー)およびTiger Lake(マイクロプロセッサー)を参照してください。 ターゲット・マシンのプロセッサー・モデルを確認するには、設定アプリを開き、「システム」「バージョン情報」と進みます。 「プロセッサ」「デバイスの仕様」の下に表示されます。

この問題を確認するには、デバイス・マネージャーを開き、ユニバーサル・シリアル・バス・コントローラーの下にあるUSBデバッグ接続デバイスを探します。 このデバイスが見つからない場合は、「その他のデバイス」の下に「不明なデバイス」がないか確認します。 デバイスを右クリックしてプロパティ・ページを開きます。 デバイス ステータス テキスト ボックスには、「問題が報告されたため (コード 43)、Windows がこのデバイスを停止しました。」および「USB デバイスが無効な USB BOS 記述子を返しました。」というテキストが表示されます。

この問題を回避するには、管理者のコマンド プロンプトから次のコマンドを実行して、レジストリを変更します。

reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\usbflags\349500E00000 /v SkipBOSDescriptorQuery /t REG_DWORD /d 1 /f
reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\usbflags\045E06560000 /v SkipBOSDescriptorQuery /t REG_DWORD /d 1 /f

次に、デバッグ ケーブルを取り外して再度挿入します。

接続がデバッガー コンソール ウィンドウでメッセージを再試行し、ターゲットに侵入できない - SkipPciProbeDebugDevice

KDNET デバッガー コンソールで次のメッセージが表示された場合、ターゲットへのブレークインを開始できない場合、または特定のコマンド (kdfiles など) で問題が発生した場合は、KDNET がシーケンス外の ping パケットを受信したことが原因である可能性があります。"

... Retry sending the same data packet for 128 times.

The transport connection between host kernel debugger and target Windows seems lost.
please try resync with target, recycle the host debugger, or reboot the target Windows.

この問題は、pci.sys ドライバーがデバッグ デバイスを誤ってプローブしているために発生する可能性があります。 エラーを排除するには、管理者のコマンド プロンプトでターゲット デバイスに次のレジストリ エントリを作成します。

reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\SERVICES\kdnet /v SkipPciProbeDebugDevice /t REG_DWORD /d 1 /f

次に、ターゲット コンピューターを再起動します。

shutdown /r /t 0

デバイスが再起動すると、エラーは消え、コマンドは想定どおりに動作します。

関連項目

カーネルモードデバッグを手動で設定する

KDNET ネットワーク カーネル デバッグの自動設定

KDNET ネットワーク カーネル デバッグの手動設定

USB KDNET EEM カーネル モード デバッグの設定 (KDNET-EEM-USB)

USB KDNET カーネル モード デバッグの設定 (KDNET-USB)