自動設定 KDNET 網路核心偵錯

適用於 Windows 的偵錯工具,支援透過網路進行核心偵錯。 本文說明如何使用 kdnet.exe 安裝程式工具來自動設定網路偵錯。

執行調試程式的計算機稱為主計算機,而正在偵錯的計算機稱為目標計算機。 主計算機必須執行 Windows 7 或更新版本,而且目標計算機必須執行 Windows 8 或更新版本。

判斷主計算機的IP位址

  1. 確認目標計算機和主機計算機已使用適當的網路纜線連線到網路中樞或交換器。

  2. 在主計算機上,開啟命令提示字元,然後輸入 IPConfig 以顯示IP組態。

  3. 在命令輸出中,找出乙太網路卡的 IPv4 位址。

...

Ethernet adapter Ethernet:
...

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

  1. 記下您要用於偵錯之網路適配器的 IPv4 位址。

設定主機和目標計算機

請遵循下列步驟,使用 kdnet.exe 公用程式,在目標計算機上自動設定調試程序設定。

  1. 確認主機系統上已安裝 Windows 偵錯工具。 如需下載和安裝調試程式工具的資訊,請參閱偵錯 Windows 工具

  2. 找出 kdnet.exeVerifiedNICList.xml 檔案。 根據預設,檔案位於下列位置:

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

    這些指示假設這兩部計算機都在目標與主機上執行64位版本的Windows。 如果不是這種情況,最佳方法是在目標執行所在的主機上執行相同「位」工具。 例如,如果目標正在執行 32 位 Windows,請在主機上執行 32 版的調試程式。 如需詳細資訊,請參閱 選擇 32 位或 64 位偵錯工具

  3. 在主計算機上,將這兩個檔案複製到網路共用或 Thumb 磁碟驅動器,使其可在目標電腦上使用。

  4. 在目標計算機上,建立 C:\KDNET 目錄,並將 kdnet.exeVerifiedNICList.xml 檔案複製到該目錄。

    重要

    使用 kdnet.exe 變更開機資訊之前,您可能需要暫時暫停測試計算機上的 Windows 安全性功能,例如 BitLocker 和安全開機。 在測試完成時重新啟用這些安全性功能,並在停用安全性功能時適當地管理測試計算機。

  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 檔案中的埠號碼和密鑰。 選取 [確定]。

您也可以開啟命令提示字元並輸入下列命令來啟動 WinDbg 工作階段。 <YourPort> 是您先前選取的埠,而 <YourKey> 是先前 kdnet.exe 傳回的密鑰。 貼上您先前儲存至記事本 .txt 檔案的金鑰。

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

範例中顯示的選擇性 -d 參數會啟用早期中斷。 如需詳細資訊,請參閱 WinDbg 命令行選項

如果系統提示您允許 WinDbg 透過防火牆存取埠,請允許 WinDbg 存取 這三 種不同網路類型的埠。

Windows 安全性 警示的螢幕快照,其中選取專案允許存取這三種網路類型。

此時,調試程式會等候目標重新連線。 文字會顯示在除錯程式命令視窗中。 該文字會類似下列內容:

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...

重新啟動目標計算機

調試程式位於「正在等候重新連線...」階段,重新啟動目標計算機。 重新啟動計算機的其中一種方式是從系統管理員的命令提示字元使用此命令。

shutdown -r -t 0 

目標電腦重新啟動之後,調試程式應該會自動連線。

疑難排解提示

必須允許透過防火牆偵錯應用程式

在調試程序執行所在的主機端,必須啟用所有類型的網路功能,讓調試程式能夠透過防火牆與目標通訊。

使用 控制台 允許透過防火牆存取。

  1. 開啟 [控制台 > 系統與安全性],然後選取 [允許應用程式通過 Windows 防火牆]。

    • (WinDbg) 在應用程式清單中,找出 WinDbg 引擎進程 (TCP) (所有)

    • (WinDbg (傳統) ) 在應用程式清單中,找出 Windows GUI 符號調試程式和Windows 核心調試程式

  2. 使用複選框來允許這兩個應用程式通過 這三 種不同網路類型。

  3. 向下捲動並選取 [ 確定 ] 以儲存防火牆變更。 重新啟動偵錯工具。

    控制台 防火牆組態的螢幕快照,其中顯示已啟用這三種網路類型的 Windows GUI 符號調試程式和 Windows 核心調試程式應用程式。

使用 Ping 來測試連線能力

如果調試程式逾時且未連線,請使用目標電腦上的 ping 命令來驗證連線能力。

   C:\>Ping <HostComputerIPAddress>

選擇網路偵錯的埠

如果調試程式逾時且未連線,可能是因為預設埠號碼 50000 已在使用中或遭到封鎖。

您可以選擇 49152 到 65535 的任何埠號碼。 建議的範圍介於 50000 到 50039 之間。 您在主電腦上執行的調試程式會針對獨佔存取開啟您選擇的埠。

可用於網路偵錯的埠號碼範圍可能受限於貴公司的網路原則。 若要判斷貴公司的原則是否限制可用於網路偵錯的埠範圍,請洽詢您的網路管理員。

支援的網路適配器

如果在執行 kdnet.exe 時會顯示「此電腦中的任何 NIC 不支援網路偵錯」,則不支援網路適配器。

主計算機可以使用任何網路適配器,但目標計算機必須使用 Windows 偵錯工具支援的網路適配器。 如需支援的網路適配器清單,請參閱 Windows 10 中支援的乙太網路 NIC 進行網路核心偵錯,以及在 Windows 8.1 中針對網路核心偵錯支援乙太網路 NIC

啟用其他偵錯類型

從 Windows 10 2020 年 10 月更新 (20H2) 開始,支援下列選項來啟用四種類型的偵錯:

您可以指定偵錯類型的任何組合。

如果未指定偵錯類型,則會啟用內核偵錯。

如果同時啟用 Hypervisor 和核心偵錯,Hypervisor 埠會設定為 <YourDebugPort> + 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 選項 Description 對等的 set 命令
b 啟用 bootmgr 偵錯 bcdedit /bootdebug {bootmgr} on
h 啟用 Hypervisor 偵錯 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總線、裝置和函式號碼。 針對總線參數,輸入 bd.f ,其中 bdf 是適配卡的總線號碼、裝置號碼和函式號碼。 這些值會顯示在 [一般] 索引標籤的 [位置] 底下 裝置管理員。

例如:

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

另請參閱