共用方式為


設定虛擬機的網路偵錯 - KDNET

本主題描述如何設定 Hyper-V 虛擬機 (VM) 的核心偵錯連線。

Hyper-V 虛擬機設定

若要對 Gen 2 Hyper-V 虛擬機進行偵錯,請完成下列步驟。

1.建立已安裝 Windows 的 VM

如需如何建立 VM 的資訊,請參閱 使用 Hyper-V 建立虛擬機。

2.定義外部虛擬交換器

若要與 VM 通訊,可以使用虛擬外部網路交換器。 如需如何建立外部網路交換器的資訊,請參閱 建立虛擬網路

設定外部網路交換器時,必須設定下列選項。

選項
連線類型 外部網路
允許管理作業系統共用此網路介面卡 已啟用
VLAN 識別碼 停用

3.停用安全開機

若要允許 kdnet 公用程式更新 BCDEdit 開機設定,請遵循下列步驟暫時停用虛擬機上的安全開機。

  1. 載入 Hyper-V 管理員,然後選取 VM 的屬性。

  2. 選取 [ 安全性 設定]。

  3. 取消核取 [ 啟用安全開機] 複選框。

  4. 選取 [OK] \(確定\)以儲存設定。

完成偵錯后,您可以重新啟用安全開機,並在目標 VM 上停用核心偵錯。

4.安裝適用於 Windows 的偵錯工具

偵錯工具會用於調試程式和 kdnet 公用程式,而且必須安裝。 如需如何下載及安裝偵錯工具的資訊,請參閱 偵錯 Windows 工具。

設定虛擬機的網路偵錯 - KDNET

記錄主機IP位址

若要在與目標虛擬機相同的計算機上執行主機調試程式,請遵循下列步驟。

  1. 在主電腦 OS 中,開啟 [命令提示字元] 視窗,然後輸入 IPConfig 以顯示IP組態。

  2. 在命令輸出中,找出您設定為外部虛擬交換器的乙太網路卡。

    ...
    
    Ethernet adapter vEthernet (External Virtual Switch):
    
    ...
    
    IPv4 Address. . . . . . . . . . . : <YourHostIPAddress>
    
    ...
    
    

提示

可能有多個具有類似名稱的配接器專案。 請確定並找出您所建立的虛擬交換器。

  1. 記錄外部虛擬交換器的 IPv4 位址,做為偵錯的主機位址。

  2. 若要確認目標與主計算機之間的連線,請在目標計算機上開啟提升許可權的命令提示字元視窗,然後輸入下列命令,其中 YourHostIPAddress 是主計算機的 IP 位址。

    ping -4 <YourHostIPAddress>
    

設定 VM 目標電腦

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

  1. 找出 WDK kdnet.exeVerifiedNICList.xml 檔案。 根據預設,它們位於這裡。
C:\Program Files (x86)\Windows Kits\10\Debuggers\x64

注意

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

  1. 若要允許用來剪下和貼上的長密鑰,請啟用增強的會話支援。 在 VM 視窗中,從 [ 檢視 ] 下拉功能表中,啟用 [增強的工作階段]。

  2. 在目標 VM 電腦上,建立 C:\KDNET 目錄,並將kdnet.exeVerifiedNICList.xml檔案複製到該目錄。

  3. 在目標計算機上,以 管理員 istrator 開啟命令提示字元視窗。 輸入此命令以確認目標電腦具有支援的網路適配器。

    C:\KDNET>kdnet
    
    Network debugging is supported on the following NICs:
    busparams=0.25.0, Intel(R) 82579LM Gigabit Network Connection, KDNET is running on this NIC.kdnet.exe
    
  4. 輸入此命令以設定主機系統的IP位址,並產生唯一的連線密鑰。 使用您稍早記錄之主機系統的IP位址。 針對您在 50000-50039 範圍內使用的每個目標/主機組,挑選唯一的埠位址。 在此範例中,我們將選取 50005。

    C:\>kdnet <YourIPAddress> <YourDebugPort> 
    
    Enabling network debugging on Microsoft Hypervisor Virtual Machine.
    Key=3u8smyv477z20.2owh9gl90gbxx.3sfsihzgq7di4.nh8ugnmzb4l7
    
    To debug this vm, run the following command on your debugger host machine.
    windbg -k net:port=50005,key=3u8smyv477z20.2owh9gl90gbxx.3sfsihzgq7di4.nh8ugnmzb4l7
    
    Then restart this VM by running shutdown -r -t 0 from this command prompt.
    
  5. 使用 CRTL+C 將提供的 Windbg 輸出複製到命令緩衝區。 這樣做可避免嘗試寫下傳回的長索引鍵值。

  6. 當您完成設定調試程式設定時,請重新啟用 BitLocker 並安全開機。

  7. 由於具有增強會話支援的 VM 在斷點中離開時可能會逾時,因此使用 VM 中的 [檢視] 下拉功能表停用增強的會話支援。

  8. 載入並執行調試程序之後,VM 將會重新啟動。 接下來會說明此程式。

啟動偵錯會話

  1. 若要連線到目標計算機,請使用 CTRL+V 貼上您稍早複製之 kdnet 所傳回的 Windbg 字串主要 OS 命令視窗。

    C:\Debuggers\windbg -k net:port=<YourDebugPort>,key=<YourKey> 
    

當您第一次嘗試建立網路偵錯連線時,系統可能會提示您允許偵錯應用程式 (WinDbg 或 KD) 透過防火牆存取。 您應該勾選這三種網路類型的方塊,以回應提示:網域、私人和公用。

重新啟動目標計算機

調試程式連線之後,請重新啟動目標計算機。 若要強制 VM 完全重新啟動,請使用此命令,從系統管理員的命令提示字元。

shutdown -r -t 0

當目標虛擬機重新啟動時,主機OS中的調試程式應該會連線。

連線到 VM 之後,在調試程式上叫用中斷,您可以開始偵錯。

為了支援偵錯連線,會在 VM 重新啟動之後新增核心偵錯網路適配器,並在網路屬性中顯示。

針對 KDNET 虛擬機網路偵錯進行疑難解答

如果調試程式未連線,請使用來自目標 VM 的 ping 命令來驗證連線能力。

C:\>Ping <HostComputerIPAddress>

有些事沒有正常運作,我不確定什麼...

  • 請確定您已讓 WinDbg 通過防火牆。
  • 確認您使用 BCDEdit 或 kdnet 所產生的唯一金鑰。

我的 VM 沒有網路連線能力

  • 從 Hyper-V 管理員開啟 Virtual Switch Manager,選取現有的虛擬交換器,然後從下拉式方塊中選取外部網路 NIC,然後從 [虛擬交換器管理員] 對話框中選取 [確定],將外部網路 NIC 變更為 [Microsoft 核心偵錯網络適配器]。 更新虛擬交換器 NIC 之後,請務必關閉 VM 並重新啟動。

將 Hyper-V 角色新增至 Windows 計算機的順序

如果您的目標電腦是虛擬機主機,您可以設定網路偵錯,但仍具有虛擬機的網路存取權。

假設您想要在下列情況下設定網路偵錯。

  • 目標電腦具有單一網路介面卡。
  • 您想要在目標電腦上安裝 Hyper-V 角色。
  • 您想要在目標電腦上建立一或多個虛擬機。

最好的方法是在安裝 Hyper-V 角色之前,先在目標電腦上設定網路偵錯。 然後,虛擬機將可以存取網路。

如果您決定在目標計算機上安裝 Hyper-V 角色之後設定網路偵錯,則必須變更虛擬機的網路設定,將它們橋接至 Microsoft 核心網路偵錯配接器。 否則,虛擬機將無法存取網路。

另請參閱

使用虛擬 COM 埠手動設定虛擬機的核心模式偵錯

手動設定網路 連線