Condividi tramite


Configurazione del debug di rete di una macchina virtuale - KDNET

Questo argomento descrive come configurare una connessione di debug del kernel a una macchina virtuale (VM) di Hyper-V.

Hyper-V configurazione della macchina virtuale

Per eseguire il debug di una macchina virtuale (VM) di seconda generazione Hyper-V, seguire questa procedura.

1. Creare una macchina virtuale con Windows installato

Per informazioni su come creare una macchina virtuale, vedere Creare una macchina virtuale con Hyper-V.

2. Definire un commutatore virtuale esterno

Per comunicare con la macchina virtuale, è possibile usare un commutatore di rete esterno virtuale. Per informazioni su come creare un commutatore di rete esterno, vedere Creare una rete virtuale.

Quando il commutatore di rete esterno è configurato, è necessario impostare le opzioni seguenti.

Opzione Valore
Tipo di connessione Rete esterna
Consenti al sistema operativo di gestione di condividere questa scheda di rete Attivato
VLAN ID Disabilitato

3. Disabilitare l'avvio protetto

Per consentire all'utilità kdnet di aggiornare le impostazioni di avvio BCDEdit, disabilitare temporaneamente l'avvio protetto nella macchina virtuale seguendo questa procedura.

  1. Caricare il gestore Hyper-V e selezionare le proprietà per la macchina virtuale.

  2. Selezionare le impostazioni di sicurezza .

  3. Deselezionare la casella di controllo Abilita avvio protetto .

  4. Scegliere OK per salvare le impostazioni.

È possibile riabilitare l'avvio protetto dopo aver completato il debug e aver disabilitato il debug del kernel nella macchina virtuale di destinazione.

4. Installare gli strumenti di debug per Windows

Gli strumenti di debug vengono usati per il debugger e l'utilità kdnet e devono essere installati. Per informazioni su come scaricare e installare gli strumenti di debug, vedere Strumenti di debug per Windows.

Configurazione del debug di rete di una macchina virtuale - KDNET

Registrare l'indirizzo IP dell'host

Per eseguire il debugger host nello stesso PC della macchina virtuale di destinazione, seguire questa procedura.

  1. Nel sistema operativo del computer host aprire una finestra del prompt dei comandi e immettere IPConfig per visualizzare la configurazione IP.

  2. Nell'output del comando, individua la scheda Ethernet che hai configurato come commutatore virtuale esterno.

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

Suggerimento

Potrebbero essere presenti più voci dell'adattatore con nomi simili. Assicurarsi e individuare il commutatore virtuale creato.

  1. Registrare l'indirizzo IPv4 del commutatore virtuale esterno che verrà usato come indirizzo host per il debug.

  2. Per verificare la connettività tra la destinazione e il computer host, aprire una finestra del prompt dei comandi con privilegi elevati nel computer di destinazione e immettere il comando seguente, dove YourHostIPAddress è l'indirizzo IP del computer host.

    ping -4 <YourHostIPAddress>
    

Configurazione del computer di destinazione della macchina virtuale

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

  1. Individuare i WDK file kdnet.exe e VerifiedNICList.xml. Per impostazione predefinita, si trovano qui.
C:\Program Files (x86)\Windows Kits\10\Debuggers\x64

Annotazioni

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 architettura degli strumenti sull'host su cui è in esecuzione il target. 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.

  1. Per consentire di tagliare e incollare la lunga chiave utilizzata, abilitare il supporto avanzato per le sessioni. Nella finestra della macchina virtuale, dal menu a discesa Visualizza abilitare Sessione avanzata.

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

  3. Nel computer di destinazione, aprire una finestra del prompt dei comandi in qualità di amministratore. Immettere questo comando per verificare che il computer di destinazione disponga di una scheda di rete supportata.

    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. Digitare questo comando per impostare l'indirizzo IP del sistema host e generare una chiave di connessione univoca. Usare l'indirizzo IP del sistema host registrato in precedenza. Selezionare un indirizzo di porta univoco per ogni coppia di destinazione/host con cui si lavora, compreso nell'intervallo 50000-50039. Per questo esempio si selezionerà 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. Usare CRTL+C per copiare l'output di Windbg fornito nel buffer dei comandi. In questo modo si evita di tentare di annotare il valore della chiave lunga restituito.

  6. Riabilitare BitLocker e l'avvio protetto al termine della configurazione delle impostazioni del debugger.

  7. Poiché una macchina virtuale con supporto di sessione avanzata può andare in timeout quando si verifica un'interruzione, disabilitare il supporto per la sessione avanzata utilizzando il menu a discesa Visualizza nella macchina virtuale.

  8. La macchina virtuale verrà riavviata dopo il caricamento e l'esecuzione del debugger. Questo processo è descritto di seguito.

Avvio della sessione di debug

  1. Per connettersi al PC di destinazione, usare CTRL+V per incollare nella finestra di comando principale del sistema operativo la stringa Windbg restituita da kdnet copiata in precedenza.

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

Quando si tenta di stabilire una connessione di debug di rete, potrebbe essere richiesto di consentire all'applicazione di debug (WinDbg o KD) l'accesso tramite il firewall. È consigliabile rispondere al prompt selezionando le caselle per tutti e tre i tipi di rete: dominio, privato e pubblico.

Riavvio del PC di destinazione

Una volta connesso il debugger, riavviare il computer di destinazione. Per forzare il riavvio completo della macchina virtuale, usare questo comando dal prompt dei comandi di un amministratore.

shutdown -r -t 0

Quando la macchina virtuale di destinazione viene riavviata, il debugger nel sistema operativo host deve connettersi.

Dopo la connessione alla macchina virtuale, premere l'interruzione nel debugger ed è possibile avviare il debug.

Per supportare la connessione di debug, viene aggiunto un adattatore di rete kernel per il debug ed è visibile nelle proprietà della rete dopo il riavvio della macchina virtuale.

Risoluzione dei problemi relativi al debug della rete di macchine virtuali KDNET

Se il debugger non si connette, usare il comando ping dalla macchina virtuale di destinazione per verificare la connettività.

C:\>Ping <HostComputerIPAddress>

Qualcosa non funzionava bene e non sono sicuro di cosa...

  • Assicurati di aver consentito l'accesso di WinDbg attraverso il firewall.
  • Verificare di usare una chiave univoca generata da BCDEdit o kdnet.

Le macchine virtuali non hanno connettività di rete

  • Aprire il gestore dei commutatori virtuali da Hyper-V Manager, selezionare il commutatore virtuale esistente e cambiare la NIC della rete esterna selezionando la Scheda di rete debug kernel Microsoft dalla casella a discesa e successivamente premere OK nella finestra di dialogo del gestore dei commutatori virtuali. Dopo aver aggiornato la scheda di interfaccia di rete del commutatore virtuale, assicurarsi di arrestare e riavviare le macchine virtuali.

Sequenza per aggiungere il ruolo Hyper-V a un PC Windows

Se il computer di destinazione è un host di macchine virtuali, è possibile configurare il debug di rete e avere comunque accesso alla rete per le macchine virtuali.

Si supponga di voler configurare il debug di rete nella situazione seguente.

  • Il computer di destinazione dispone di una singola scheda di interfaccia di rete.
  • Vuoi installare il ruolo Hyper-V sul computer di destinazione.
  • Si intende creare una o più macchine virtuali nel computer di destinazione.

L'approccio migliore consiste nel configurare il debug di rete nel computer di destinazione prima di installare il ruolo Hyper-V. Le macchine virtuali avranno quindi accesso alla rete.

Se si decide di configurare il debug di rete dopo l'installazione del ruolo Hyper-V nel computer di destinazione, è necessario modificare le impostazioni di rete per le macchine virtuali per collegarle all'adattatore di debug di rete del kernel Microsoft. In caso contrario, le macchine virtuali non avranno accesso alla rete.

Vedere anche

Configurazione Kernel-Mode debug di una macchina virtuale manualmente tramite una porta COM virtuale

Configurazione manuale di una connessione di rete