KDNET ネットワーク カーネル デバッグを自動的に設定する

Windows用デバッグツールは、ネットワーク経由でのカーネルデバッグをサポートしています。 この記事では、kdnet.exeセットアップツールを使用してネットワークデバッグを自動的にセットアップする方法について説明します。

デバッガを実行するコンピューターはホスト コンピューターと呼ばれ、デバッグ対象のコンピューターはターゲット コンピューターと呼ばれます。 ホストコンピューターはWindows 7以降を実行している必要があり、ターゲットコンピューターはWindows 8以降を実行している必要があります。

ホスト コンピューターの IP アドレスを確認する

  1. 適切なネットワークケーブルを使用して、ターゲットPCとホストPCがネットワークハブまたはスイッチに接続されていることを確認します。

  2. ホストコンピューターで、コマンドプロンプトを開き、 「IPConfig」 と入力してIP構成を表示します。

  3. コマンド出力で、イーサネットアダプターのIPv4アドレスを見つけます。

...

Ethernet adapter Ethernet:
...

IPv4 Address. . . . . . . . . . . : <YourHostIPAddress>
...

  1. デバッグに使用するネットワーク アダプターの IPv4 アドレスを書き留めておきます。

ホストとターゲットコンピューターをセットアップします

kdnet.exeユーティリティを使用して、次の手順に従ってターゲットPCのデバッガー設定を自動的に構成します。

  1. Windows 用デバッグ ツールがホスト システムにインストールされていることを確認します。 デバッガー ツールのダウンロードとインストールについては、「Windows 用デバッグ ツール」を参照してください。

  2. kdnet.exe およびVerifiedNICList.xmlファイルを見つけます。 既定では、ファイルは次の場所にあります。

    C:\Program Files (x86)\Windows Kits\10\Debuggers\x64
    

    これらの手順では、両方の PC がターゲットとホストの両方で 64 ビット バージョンの Windows を実行していることを前提としています。 そうでない場合は、ターゲットが実行されているホストで同じ"ビット数"のツールを実行することをお勧めします。 たとえば、ターゲットが 32 ビット Windows を実行している場合は、ホストで 32 バージョンのデバッガーを実行します。 詳細については、 「32ビットまたは64ビットのデバッグツールを選択する」 を参照してください。

  3. ホストコンピューターで、ターゲットコンピューターで使用できるように、二つのファイルをネットワーク共有またはサムドライブにコピーします。

  4. ターゲットコンピューターで、C:\KDNETディレクトリを作成し、kdnet.exeファイルとVerifiedNICList.xmlファイルをそのディレクトリにコピーします。

    重要

    kdnet.exeを使用してブート情報を変更する前に、テストPCでBitLockerやセキュアブートなどのWindowsセキュリティ機能を一時的に中断することが必要になる場合があります。 テストが完了したらこれらのセキュリティ機能を再度有効にし、セキュリティ機能が無効になっている場合はテストPCを適切に管理します。

  5. ターゲット コンピューターで、管理者としてコマンド プロンプトを開きます。 次のコマンドを入力して、ターゲットコンピューターにサポートされているネットワークアダプターがあることを確認します。

    C:\KDNET>kdnet.exe
    Network debugging is supported on the following NICs:
    busparams=1.0.0, Broadcom NetXtreme Gigabit Ethernet, Plugged in.  
    This Microsoft hypervisor supports using KDNET in guest VMs.
    
  6. kdnet.exeからの出力がターゲットのネットワークアダプターがサポートされていることを示している場合は、続行できます。

  7. 次のコマンドを入力して、ホストシステムのIPアドレスを設定し、一意の接続キーを生成します。 ホストシステムのIPアドレスまたは名前を使用します。 50000 から 50039 の推奨範囲内で、使用するターゲット/ホスト ペアごとに一意のポート アドレスを選択します。

    C:\KDNET>kdnet.exe <HostComputerIPAddress> <YourDebugPort> 
    
    Enabling network debugging on Intel(R) 82577LM Gigabit Network Connection.
    Key=2steg4fzbj2sz.23418vzkd4ko3.1g34ou07z4pev.1sp3yo9yz874p
    
  8. 返されたキーをメモ帳の.txtファイルにコピーします。

カーネルデバッグのためにWinDbgをターゲットに接続します。

ホスト コンピューターで WinDbg を開きます。 [ファイル] メニューの [カーネル デバッグ] を選択します。 カーネルデバッグダイアログで、Netタブを開きます。前にメモ帳の.txtファイルに保存したポート番号とキーを貼り付けます。 [OK] を選択します。

コマンドプロンプトを開き、次のコマンドを入力して、WinDbgセッションを開始することもできます。 <YourPort>は前に選択したポートで、<YourKey>は前にkdnet.exeによって返されたキーです。 前にメモ帳の.txtファイルに保存したキーを貼り付けます。

windbg.exe -k -d net:port=<YourDebugPort>,key=<YourKey> 

この例に示されている省略可能な-dパラメーターは、早期のブレークインを有効にします。 詳細については、 「WinDbgのコマンドラインオプション」 を参照してください。

ファイアウォールを介してポートにアクセスすることを WinDbg に許可するよう求めるダイアログが表示された場合は、WinDbg が 3 種類のすべてのネットワークに対してポートにアクセスすることを許可します。

Screenshot of Windows Security Alert with selections to allow access to all three network types.

この時点で、デバッガーはターゲットが再接続するのを待機します。 テキストは、デバッガーのコマンドウィンドウに表示されます。 そのテキストは、次のようになります。

Microsoft (R) Windows Debugger Version 1.0.1908.30002 AMD64
Copyright (c) Microsoft Corporation. All rights reserved.

Using NET for debugging
Opened WinSock 2.0
Waiting to reconnect...

ターゲットPCを再起動します。

デバッガーが"再接続を待機しています..."の段階になったら、ターゲットコンピューターを再起動します。 PCを再起動する方法の1つは、管理者のコマンドプロンプトからこのコマンドを使用することです。

shutdown -r -t 0 

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

トラブルシューティングのヒント

アプリケーションのデバッグは、ファイアウォール経由で許可する必要があります。

デバッガーが実行されているホスト側では、すべての種類のネットワークを有効にして、デバッガーがファイアウォールを介してターゲットと通信できるようにする必要があります。

コントロールパネルを使用して、ファイアウォール経由のアクセスを許可します。

  1. [コントロール パネル] > [システムとセキュリティ] を開き、[Windows ファイアウォールによるアプリケーションの許可] を選びます。

    • (WinDbg) アプリケーションの一覧で、"WinDbg エンジン プロセス (TCP) (すべて)" を見つけます。

    • (WinDbg (クラシック)) アプリケーションの一覧で、Windows GUI シンボリック デバッガーWindows カーネル デバッガーを見つけます。

  2. チェックボックスを使用して、これら2つのアプリケーションが3つの異なるネットワークタイプすべてを通過できるようにします。

  3. 下にスクロールし、[OK] を選択してファイアウォールの変更を保存します。 デバッガーを再起動してください。

    Screenshot of Control Panel firewall configuration displaying Windows GUI Symbolic Debugger and Windows Kernel Debugger applications with all three network types enabled.

ping を使用して接続をテストする

デバッガーがタイムアウトして接続されない場合は、ターゲットPCでpingコマンドを使用して接続を確認します。

   C:\>Ping <HostComputerIPAddress>

ネットワークデバッグ用のポートの選択

デバッガーがタイムアウトして接続されない場合は、既定のポート番号5万が既に使用されているか、ブロックされている可能性があります。

49152 から 65535 までの任意のポート番号を選択できます。 推奨範囲は 50000 から 50039 です。 選択したポートが開き、ホスト コンピューターで実行されているデバッガーが排他的にアクセスできるようになります。

ネットワーク デバッグに使用できるポート番号の範囲は、会社のネットワーク ポリシーによって制限される場合があります。 ネットワーク デバッグに使用できるポートの範囲が会社のポリシーで制限されているかどうかを確認するには、ネットワーク管理者に問い合わせてください。

サポートされているネットワーク アダプター

kdnet.exeを実行したときに"Network debugging is not supported on any of the NICs in this machine"と表示された場合、そのネットワークアダプターはサポートされていません。

ホスト コンピューターでは任意のネットワーク アダプターを使用できますが、ターゲット コンピューターでは、Windows 用デバッグ ツールでサポートされているネットワーク アダプターを使用する必要があります。 サポートされているネットワーク アダプターの一覧については、「Windows 10 のネットワーク カーネル デバッグでサポートされているイーサネット NIC」と「Windows 8.1 のネットワーク カーネル デバッグでサポートされるイーサネット NIC」 参照してください。

その他のデバッグの種類を有効にします

Windows 2020年10月10日更新プログラム (20H2) 以降では、4種類のデバッグを有効にするために、次のオプションがサポートされています。

デバッグの種類の任意の組み合わせを指定できます。

デバッグの種類が指定されていない場合は、カーネルデバッグが有効になります。

ハイパーバイザーとカーネルデバッグの両方が有効になっている場合、ハイパーバイザーポートは<YourDebugPort>+1に設定されます。

使用例

-bkwオプションを使用して、bootmgr、カーネル、およびwinloadのデバッグを有効にします。

C:\>kdnet.exe <HostComputerIPAddress> <YourDebugPort> -bkw

Enabling network debugging on Intel(R) 82577LM Gigabit Network Connection.
Key=2steg4fzbj2sz.23418vzkd4ko3.1g34ou07z4pev.1sp3yo9yz874p

デバッグの種類のオプションの概要

KNDETオプション 説明 同等のsetコマンド
b bootmgrのデバッグを有効にします bcdedit/bootdebug{bootmgr}on
ハイパーバイザーのデバッグを有効にします bcdedit/set hypervisordebug on
k カーネルのデバッグを有効にします bcdedit /debug on
w winloadのデバッグを有効にします bcdedit/bootdebug on

バスパラメーターを指定します

Kdnetがトランスポートのバスパラメーターを自動的に決定できない場合は、次の構文を使用して/busparamsオプションを使用してコマンドラインで指定します。

kdnet.exe /busparams [b.d.f] [host] [port] [-[b][h][k][w]]

b.d.f 構成するデバイスのバスパラメーターを指定します。

ターゲットコンピューターでデバイスマネージャーを使用して、デバッグに使用するアダプターのPCIバス、デバイス、および関数の番号を確認します。 バスパラメーターの場合は、 「b.d.f」 と入力します。ここで、b, d, および fはバス番号、デバイス番号、およびアダプターの関数番号です。 これらの値は、[全般] タブの [場所] のデバイス マネージャーに表示されます。

次に例を示します。

C:\>kdnet.exe /busparams 0.29.7 <HostComputerIPAddress> <YourDebugPort> -bkw

関連項目