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 di kdnet.exe .
Il computer che esegue il debugger viene chiamato computer host e il computer sottoposto a 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
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.
Nel computer host aprire un prompt dei comandi e immettere
IPConfig
per visualizzare la configurazione IP.Nell'output del comando individuare l'indirizzo IPv4 della scheda Ethernet.
...
Ethernet adapter Ethernet:
...
IPv4 Address. . . . . . . . . . . : <YourHostIPAddress>
...
In alternativa, usare Impostazioni, Rete e Internet, Ethernet per raccogliere informazioni sull'indirizzo IPv4.
- Prendere nota dell'indirizzo IPv4 della scheda di rete che si intende usare per il debug.
Configurare i computer host e di destinazione
Usare l'utilità kdnet.exe per configurare automaticamente le impostazioni del debugger nel PC di destinazione seguendo questa procedura.
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.
Individuare i file kdnet.exe e VerifiedNICList.xml . Per impostazione predefinita, i file si trovano nel percorso seguente:
C:\Program Files (x86)\Windows Kits\10\Debuggers\x64
Queste direzioni 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 la stessa "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.
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.
Nel computer di destinazione creare una directory C:\KDNET e copiare i file kdnet.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 dei test e gestire in modo appropriato il PC di test quando le funzionalità di sicurezza sono disabilitate.
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.
Quando l'output di kdnet.exe indica che la scheda di rete nella destinazione è supportata, è possibile procedere.
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, nell'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
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 la chiave salvati nel Blocco note .txt file in precedenza. Seleziona 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 la chiave salvata 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.
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
Il debug delle applicazioni deve essere consentito 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.
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) (tutto).
(WinDbg (versione classica)) Nell'elenco delle applicazioni individuare Debugger simbolico dell'interfaccia utente grafica di Windows e Debugger kernel Windows.
Usare le caselle di controllo per consentire a queste due applicazioni tramite tutti e tre i diversi tipi di rete.
Scorrere verso il basso e selezionare OK per salvare le modifiche del firewall. Riavviare il debugger.
Usare ping per testare la connettività
Se il debugger raggiunge 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 raggiunge 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 aziendali limitano l'intervallo di porte che possono essere usate per il debug di rete, rivolgersi agli 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 nelle schede di interfaccia di rete di 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 October 2020 Update (20H2), sono supportate le opzioni seguenti per abilitare quattro tipi di debug:
b : abilita il debug di Bootmgr. Vedere BCDEdit /bootdebug.
w : abilita il debug winload. Vedere BCDEdit /bootdebug.
h : abilita il debug dell'hypervisor. Vedere BCDEdit /hypervisorsettings.
k : abilita il debug del kernel. Vedere Introduzione a WinDbg (modalità kernel).
È possibile specificare qualsiasi combinazione di tipi di debug.
Se non vengono specificati tipi di debug, il debug del kernel è abilitato.
Se sia l'hypervisor che il debug del kernel sono abilitati, la porta dell'hypervisor è impostata su <YourDebugPort>
+ 1.
Esempio di utilizzo
Usare l'opzione - bkw per abilitare il debug di 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} on |
h | abilita il debug dell'hypervisor | bcdedit /set hypervisordebug on |
k | abilita il debug del kernel | bcdedit /debug on |
w | abilita il debug 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 l'adattatore da usare per il debug. Per i parametri del bus, immettere b.d.f dove b, d e f sono il numero 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