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

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

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

ホスト コンピューターの IP アドレスの決定

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

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

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

...

Ethernet adapter Ethernet:
...

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

4.デバッグに使用するネットワーク アダプターの IPv4 アドレスをメモしておきます。

ホスト コンピューターとターゲット コンピューターの設定

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

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

  2. kdnet.exeVerifiedNICList.xmlファイルを見つけます。 既定では、これらはここに配置されます。

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

    注意

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

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

  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.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 -k -d net:port=<YourDebugPort>,key=<YourKey> 

この例に示す省略可能な -d パラメーターを使用すると、早期中断が有効になります。 詳細については、「 WinDbg Command-Line オプション」を参照してください

WinDbg がファイアウォール経由でポートにアクセスすることを許可するように求められた場合は、WinDbg が 3 つの ネットワークの種類すべてについてポートにアクセスできるようにします。

windows security alert - windows firewall has blocked some features of this app .

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

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選択します

  2. アプリケーションの一覧で、GUI シンボリック デバッガー Windows探し、カーネル デバッガー Windowsします。

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

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

    windows control panel firewall config showing Windows GUI Symbolic Debugger and Windows Kernel Debugger with all three network types enabled.

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

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

   C:\>Ping <HostComputerIPAddress>

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

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

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

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

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

kdnet.exeを実行すると、"このコンピューターのどの NIC でもネットワーク デバッグがサポートされていません" と表示される場合は、ネットワーク アダプターがサポートされていないことを意味します。

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

追加のデバッグの種類を有効にする

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

b - bootmgr デバッグを有効にします。 詳細については、 BCDEdit /bootdebug を参照してください。

w - winload デバッグを有効にします。 詳細については、 BCDEdit /bootdebug を参照してください。

h - ハイパーバイザー デバッグを有効にします。 詳細については、 BCDEdit /hypervisorsettings を参照してください。

k - カーネル デバッグを有効にします。 詳細については、WinDbg (カーネル モード) を使用したはじめにを参照してください。

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

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

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

使用例

bkw オプションを使用して、bootmgr、kernel、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
h ハイパーバイザーのデバッグを有効にする 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.ここで、bdf はアダプターのバス番号、デバイス番号、および機能番号です。 これらの値は、 [全般] タブの [場所] のデバイス マネージャーに表示されます。

次に例を示します。

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

Windows 10 でネットワーク カーネル デバッグ用にサポートされているイーサネット NIC

Windows 8.1 でネットワーク カーネル デバッグ用にサポートされているイーサネット NIC

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

WinDbg ドライバーの概要 (カーネル モード)

ユニバーサル ドライバーのデバッグ - ステップ バイ ステップ ラボ (Echo カーネル モード)