Configurare automaticamente il debug del kernel di rete KDNET

Gli strumenti di debug per Windows supportano il debug del kernel in una rete. Questo articolo descrive come configurare automaticamente il debug di rete usando lo strumento di installazione dikdnet.exe .

Il computer che esegue il debugger viene chiamato computer host e il computer in fase di debug viene chiamato computer di destinazione. Il computer host deve eseguire Windows 7 o versione successiva e il computer di destinazione deve eseguire Windows 8 o versione successiva.

Determinare l'indirizzo IP del computer host

  1. Verificare che i PC di destinazione e host siano connessi a un hub di rete o a un commutatore usando un cavo di rete appropriato.

  2. Nel computer host aprire un prompt dei comandi e immettere IPConfig per visualizzare la configurazione IP.

  3. Nell'output del comando individuare l'indirizzo IPv4 della scheda Ethernet.

...

Ethernet adapter Ethernet:
...

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

  1. Prendere nota dell'indirizzo IPv4 della scheda di rete che si intende usare per il debug.

Configurare l'host e i computer di destinazione

Usare l'utilità kdnet.exe per configurare automaticamente le impostazioni del debugger nel PC di destinazione seguendo questa procedura.

  1. Verificare che gli strumenti di debug di Windows siano installati nel sistema host. Per informazioni sul download e l'installazione degli strumenti del debugger, vedere Strumenti di debug per Windows.

  2. Individuare i filekdnet.exe e VerifiedNICList.xml . Per impostazione predefinita, i file si trovano nel percorso seguente:

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

    Queste indicazioni presuppongono che entrambi i PC eseguano una versione a 64 bit di Windows sia nella destinazione che nell'host. In caso contrario, l'approccio migliore consiste nell'eseguire lo stesso "bitness" degli strumenti nell'host in cui è in esecuzione la destinazione. Ad esempio, se la destinazione esegue Windows a 32 bit, eseguire una versione 32 del debugger nell'host. Per altre informazioni, vedere Scelta degli strumenti di debug a 32 bit o a 64 bit.

  3. Nel computer host copiare i due file in una condivisione di rete o in un'unità personale in modo che siano disponibili nel computer di destinazione.

  4. Nel computer di destinazione creare una directory C:\KDNET e copiare i filekdnet.exe e VerifiedNICList.xml in tale directory.

    Importante

    Prima di usare kdnet.exe per modificare le informazioni di avvio, potrebbe essere necessario sospendere temporaneamente le funzionalità di sicurezza di Windows, ad esempio BitLocker e Avvio protetto nel PC di test. Riabilitare queste funzionalità di sicurezza al termine del test e gestire in modo appropriato il PC di test quando le funzionalità di sicurezza sono disabilitate.

  5. Nel computer di destinazione aprire un prompt dei comandi come amministratore. Immettere questo comando per verificare che il computer di destinazione disponga di una scheda di rete supportata:

    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. Quando l'output di kdnet.exe indica che la scheda di rete nella destinazione è supportata, è possibile procedere.

  7. Immettere il comando seguente per impostare l'indirizzo IP del sistema host e generare una chiave di connessione univoca. Usare l'indirizzo IP o il nome del sistema host. Selezionare un indirizzo di porta univoco per ogni coppia di destinazione/host con cui si lavora, all'interno dell'intervallo consigliato da 50000 a 50039.

    C:\KDNET>kdnet.exe <HostComputerIPAddress> <YourDebugPort> 
    
    Enabling network debugging on Intel(R) 82577LM Gigabit Network Connection.
    Key=2steg4fzbj2sz.23418vzkd4ko3.1g34ou07z4pev.1sp3yo9yz874p
    
  8. Copiare il tasto restituito in un blocco note .txt file.

Connettere WinDbg alla destinazione per il debug del kernel

Nel computer host aprire WinDbg. Scegliere Debug kernel dal menu File. Nella finestra di dialogo Debug kernel aprire la scheda Net . Incollare il numero di porta e il tasto salvati nel Blocco note .txt file in precedenza. Selezionare OK.

È anche possibile avviare una sessione WinDbg aprendo un prompt dei comandi e immettendo il comando seguente. <YourPort> è la porta selezionata in precedenza e <YourKey> è la chiave restituita da kdnet.exe in precedenza. Incollare il tasto salvato nel Blocco note .txt file in precedenza.

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

Il parametro facoltativo -d illustrato nell'esempio abilita l'interruzione anticipata. Per altre informazioni, vedere Opzioni della riga di comando di WinDbg.

Se viene richiesto di consentire a WinDbg di accedere alla porta tramite il firewall, consentire a WinDbg di accedere alla porta per tutti e tre i diversi tipi di rete.

Screenshot di Sicurezza di Windows Avviso con selezioni per consentire l'accesso a tutti e tre i tipi di rete.

A questo punto, il debugger attende la riconnessione della destinazione. Il testo viene visualizzato nella finestra di comando del debugger. Il testo sarà simile al seguente:

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

Riavviare il PC di destinazione

Quando il debugger si trova in "In attesa di riconnessione..." fase, riavviare il computer di destinazione. Un modo per riavviare il PC consiste nell'usare questo comando dal prompt dei comandi di un amministratore.

shutdown -r -t 0 

Dopo il riavvio del PC di destinazione, il debugger dovrebbe connettersi automaticamente.

Suggerimenti per la risoluzione dei problemi

Le applicazioni di debug devono essere consentite tramite un firewall

Sul lato host, in cui è in esecuzione il debugger, è necessario abilitare tutti i tipi di rete per consentire al debugger di comunicare con la destinazione tramite il firewall.

Usare il Pannello di controllo per consentire l'accesso tramite il firewall.

  1. Aprire Pannello di controllo > Sistema e sicurezza e selezionare Consenti un'app tramite Windows Firewall.

    • (WinDbg) Nell'elenco delle applicazioni individuare il processo del motore WinDbg (TCP) (all).

    • (WinDbg (versione classica)) Nell'elenco delle applicazioni individuare debugger simbolico dell'interfaccia utente grafica di Windows e debugger del kernel Windows.

  2. Usare le caselle di controllo per consentire a queste due applicazioni di usare tutti e tre i diversi tipi di rete.

  3. Scorrere verso il basso e selezionare OK per salvare le modifiche del firewall. Riavviare il debugger.

    Screenshot della configurazione del firewall di Pannello di controllo che mostra il debugger simbolico dell'interfaccia utente grafica di Windows e le applicazioni debugger del kernel Windows con tutti e tre i tipi di rete abilitati.

Usare ping per testare la connettività

Se il debugger si verifica il timeout e non si connette, usare il comando ping nel PC di destinazione per verificare la connettività.

   C:\>Ping <HostComputerIPAddress>

Scelta di una porta per il debug di rete

Se il debugger si verifica il timeout e non si connette, è possibile che il numero di porta predefinito di 50000 sia già in uso o sia bloccato.

È possibile scegliere qualsiasi numero di porta compreso tra 49152 e 65535. L'intervallo consigliato è compreso tra 50000 e 50039. La porta scelta viene aperta per l'accesso esclusivo dal debugger in esecuzione nel computer host.

L'intervallo di numeri di porta che possono essere usati per il debug di rete potrebbe essere limitato dai criteri di rete dell'azienda. Per determinare se i criteri dell'azienda limitano l'intervallo di porte che possono essere usate per il debug di rete, controllare con gli amministratori di rete.

Schede di rete supportate

Se "Il debug di rete non è supportato in nessuna delle schede di interfaccia di rete in questo computer" viene visualizzato quando si esegue kdnet.exe, la scheda di rete non è supportata.

Il computer host può usare qualsiasi scheda di rete, ma il computer di destinazione deve usare una scheda di rete supportata da Strumenti di debug per Windows. Per un elenco delle schede di rete supportate, vedere Schede di interfaccia di rete Ethernet supportate per il debug del kernel di rete in Windows 10 e schede di interfaccia di rete Ethernet supportate per il debug del kernel di rete in Windows 8.1.

Abilitare altri tipi di debug

A partire da Windows 10 aggiornamento di ottobre 2020 (20H2), sono supportate le opzioni seguenti per abilitare quattro tipi di debug:

È possibile specificare qualsiasi combinazione di tipi di debug.

Se non vengono specificati tipi di debug, il debug del kernel è abilitato.

Se sono abilitati sia l'hypervisor che il debug del kernel, la porta dell'hypervisor è impostata su <YourDebugPort> + 1.

Esempio di utilizzo

Usare l'opzione - bkw per abilitare il debug bootmgr, kernel e winload.

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

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

Riepilogo delle opzioni del tipo di debug

Opzione KNDET Descrizione Comando set equivalente
b abilita il debug di bootmgr bcdedit /bootdebug {bootmgr} in
h abilita il debug dell'hypervisor bcdedit /set hypervisordebug on
K abilita il debug del kernel bcdedit /debug su
w abilita il debug di winload bcdedit /bootdebug on

Specificare i parametri del bus

Se kdnet non è in grado di determinare automaticamente i parametri del bus per il trasporto, specificarli nella riga di comando con l'opzione /busparams usando questa sintassi.

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

b.d.f specifica i parametri del bus del dispositivo da configurare.

Usare Gestione dispositivi nel computer di destinazione per determinare i numeri di bus, dispositivo e funzione PCI per la scheda da usare per il debug. Per i parametri del bus immettere b. d. f dove b, d e f sono il numero del bus, il numero di dispositivo e il numero di funzione dell'adattatore. Questi valori vengono visualizzati in Gestione dispositivi in Posizione nella scheda Generale.

Ad esempio:

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

Vedere anche