共用方式為


自動設定 KDNET 網路核心偵錯

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

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

判斷主計算機的IP位址

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

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

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

...

Ethernet adapter Ethernet:
...

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

或者,使用 [設定]、[網络與因特網]、[乙太網络] 來收集 IPv4 位址資訊。

  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. 在主電腦上,將這兩個檔案複製到網路共用或拇指磁碟驅動器,使其可在目標計算機上使用。

  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) (all)

    • (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、核心和 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
小時 啟用 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

另請參閱