

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Debug del kernel per le istanze di Windows sulla rete
<a name="troubleshoot-windows-with-kdnet"></a>

Il KDNET Extensibility Module for Elastic Network Adapter (ENA) è un livello di supporto per i driver hardware che consente il debug del kernel di Windows sulla rete tramite ENA su istanze Amazon Elastic Compute Cloud. Puoi utilizzare il modulo di estensibilità con Windows Debugger () per eseguire il debug a livello di kernel su istanze EC2 che eseguono Windows. WinDbg

Il debugging del kernel consente di diagnosticare e risolvere problemi di basso livello del sistema operativo, come errori di schermata blu (BSOD), guasti dei driver e problemi di avvio sulle istanze EC2 Windows.

**Topics**
+ [Prerequisiti](#kdnet-prerequisites)
+ [Passaggio 1: installare gli strumenti di debug di Windows sull'host di debug](#kdnet-step1-install-debugging-tools)
+ [Fase 2: Impostare l'obiettivo di debug](#kdnet-step2-setup-debug-target)
+ [Passaggio 3: avviare la sessione di debug sull'host di debug](#kdnet-step3-start-debugging-session)
+ [Passaggio 4: riavviare la destinazione di debug](#kdnet-step4-reboot-debug-target)
+ [Pulisci le impostazioni di debug dopo il debug](#kdnet-clean-up)
+ [Limitazioni](#kdnet-limitations)
+ [Note aggiuntive](#kdnet-additional-notes)

## Prerequisiti
<a name="kdnet-prerequisites"></a>

Prima di iniziare, assicurati di disporre di:

Due istanze EC2 per Windows, nella stessa sottorete:
+ Un'istanza **host di debug**: esegue Windows Debugger (). WinDbg
+ Un'istanza di **destinazione di debug, l'**istanza di cui si desidera eseguire il debug.

Per ulteriori informazioni sull'avvio delle istanze, consulta. [Inizia a usare Amazon EC2](EC2_GetStarted.md)

I gruppi di sicurezza per le istanze host e target devono consentire il traffico UDP in entrata e in uscita sulla porta utilizzata per il debug di KDNET (intervallo consigliato: 50000-50039). Il modo più semplice per configurarlo è creare un gruppo di sicurezza con una regola in entrata che consenta il traffico UDP proveniente da se stesso come origine e quindi collegare quel gruppo di sicurezza a entrambe le istanze. Per ulteriori informazioni, consulta [Regole del gruppo di sicurezza](https://docs.aws.amazon.com/vpc/latest/userguide/security-group-rules.html) nella *Guida per l’utente di Amazon VPC*.

L'istanza di destinazione di debug deve eseguire una delle seguenti versioni di Windows (o successive):
+ Windows Server 2025 con numero di build 26100.7462 (patch di dicembre 2025)
+ Windows 11 24H2 con numero di build 26100.7309
+ Windows 11 25H2 con numero di build 26200.7309

**Nota**  
Il modulo di estensibilità KDNET per ENA è distribuito come parte di Windows e può essere aggiornato solo tramite aggiornamenti cumulativi mensili di Windows. Ti consigliamo di mantenere la versione più recente di Windows KB installata sulla destinazione di debug per assicurarti di averne la versione più recente.  
Per verificare che il modulo sia presente nella destinazione di debug, esegui il comando seguente in una sessione con privilegi elevati PowerShell :  

```
Test-Path C:\Windows\system32\kd_02_1d0f.dll
```
Se il comando viene restituito`True`, il modulo è disponibile.

## Passaggio 1: installare gli strumenti di debug di Windows sull'host di debug
<a name="kdnet-step1-install-debugging-tools"></a>

Installa gli strumenti di debug di Windows sull'istanza dell'host di debug eseguendo il comando seguente in una sessione: PowerShell 

```
winget install microsoft.windbg
```

Per istruzioni dettagliate sull'installazione, vedi [Installare Windows Debugger nella documentazione](https://learn.microsoft.com/en-us/windows-hardware/drivers/debugger/) Microsoft.

Dopo l'installazione, verifica che il debugger funzioni eseguendo il comando seguente in una sessione: PowerShell 

```
windbgx
```

La WinDbg finestra dovrebbe aprirsi. In caso affermativo, l'installazione è andata a buon fine e puoi chiudere la finestra.

## Fase 2: Impostare l'obiettivo di debug
<a name="kdnet-step2-setup-debug-target"></a>

**Nota**  
Quando il debug del kernel è attivo, il dispositivo ENA utilizzato per la sessione di debug è dedicato solo al traffico del debugger. Se devi mantenere l'accesso a Internet sull'istanza di destinazione di debug durante il debug, collega una seconda ENA all'istanza prima di iniziare.

Sulla destinazione di debug, apri una PowerShell sessione con privilegi elevati e configura il debug del kernel utilizzando i seguenti passaggi.

Eseguite il comando seguente per elencare il bus, il dispositivo e il numero di funzione dell'adattatore ENA collegato all'istanza:

```
Get-NetAdapter -Physical |
    Where-Object -Property PnPDeviceID -Match -Value '^PCI\\VEN_1D0F&DEV_EC2[01]&' |
    Get-NetAdapterHardwareInfo |
    Select-Object InterfaceDescription, BusNumber, DeviceNumber, FunctionNumber |
    Format-List
```

### Se all'istanza sono collegati più adattatori ENA
<a name="kdnet-multiple-ena-adapters"></a>

Se all'istanza sono collegati più adattatori ENA, usa il comando seguente per mappare ogni adattatore fisico al relativo indirizzo IP privato. Puoi fare un riferimento incrociato a questi dettagli nella Console di gestione AWS sezione **EC2 → Istanze → [ID istanza] → Rete → Interfacce di rete**. Questo ti aiuta a correlare interfacce di rete specifiche IDs, gruppi privati IPs e di sicurezza con l'adattatore a livello di sistema operativo per un debug mirato.

```
Get-NetAdapter -Physical |
    Where-Object PnPDeviceID -Match '^PCI\\VEN_1D0F&DEV_EC2[01]&' |
    ForEach-Object {
        $adapter = $_
        $hwInfo = $adapter | Get-NetAdapterHardwareInfo
        $ipInfo = Get-NetIPAddress -InterfaceIndex $adapter.InterfaceIndex -AddressFamily IPv4
        [PSCustomObject]@{
            InterfaceDescription = $adapter.InterfaceDescription
            IPAddress            = $ipInfo.IPAddress
            BusNumber            = $hwInfo.BusNumber
            DeviceNumber         = $hwInfo.DeviceNumber
            FunctionNumber       = $hwInfo.FunctionNumber
        }
    } | Format-List
```

Annotate i `FunctionNumber` valori `BusNumber``DeviceNumber`, e dell'adattatore ENA da utilizzare per il debug dall'output.

Eseguite i seguenti comandi per configurare il debug del kernel. Sostituisci i valori segnaposto con la tua configurazione specifica:

```
bcdedit /debug on
bcdedit /set loadoptions FORCEHVTONOTSHAREDEBUGDEVICE
bcdedit /dbgsettings net hostip:host-private-ip port:port-number key:encryption-key busparams:b.d.f
```

**Nota**  
Verifica se esiste `loadoptions` eseguendo il comando seguente. Se viene restituito un valore, copia quella stringa e `;FORCEHVTONOTSHAREDEBUGDEVICE` aggiungila.  

```
(bcdedit /enum) -match "loadoptions"
```

Dove:
+ *host-private-ip*— L' IPv4 indirizzo privato dell'istanza dell'host di debug. Se le tue istanze vengono avviate in una sottorete IPv6 solo, consulta [Configurazione di KDNET con nella](https://learn.microsoft.com/en-us/windows-hardware/drivers/debugger/setting-up-a-network-debugging-connection#ipv6) documentazione di Microsoft per ulteriori informazioni IPv6 sull'utilizzo con KDNET. IPv6 
+ *port-number*— La porta da usare per la sessione di debug. L'intervallo consigliato è 50000-50039 (ad esempio,). `50000`
+ *encryption-key*— Una chiave a 256 bit utilizzata per crittografare la connessione di debug, specificata come quattro valori a 64 bit separati da punti. Ogni valore a 64 bit può contenere fino a 13 caratteri utilizzando solo lettere minuscole a—z e cifre da 0 a 9. I caratteri speciali non sono consentiti. Esempio di chiave di crittografia:. `1kdnet2keys3.4kdnet5keys6.7kdnet8keys9.10kdnet11ke`
+ *b.d.f*— I numeri di bus, dispositivo e funzione per il dispositivo ENA, formattati come `bus.device.function` (ad esempio`0.3.0`), utilizzati per il debug.

**Suggerimento**  
Per eseguire il debug del processo di avvio di Windows, esegui anche il seguente comando:  

```
bcdedit /bootdebug on
```

## Passaggio 3: avviare la sessione di debug sull'host di debug
<a name="kdnet-step3-start-debugging-session"></a>

Per consentire il debug del traffico sull'host, puoi creare una regola firewall per l'applicazione o una porta UDP specifica. WinDbg 

**Opzione 1: consentire l'applicazione WinDbg**  
Esegui i seguenti comandi per autorizzare l' WinDbg eseguibile:

```
$WinDbgxPath = "$env:LocalAppData\Microsoft\WindowsApps\WinDbgX.exe"
New-NetFirewallRule -DisplayName "Allow Inbound KDNET Connection" -Action Allow -Program $WinDbgxPath
```

**Opzione 2: consentire una porta UDP specifica**  
In alternativa, puoi consentire il traffico UDP in entrata verso la porta configurata per il debug del kernel. Sostituisci con la porta *port-number* KDNET scelta:

```
$DebugPort = port-number
New-NetFirewallRule -DisplayName "Allow Inbound KDNET Connection" -Direction Inbound -LocalPort $DebugPort -Protocol UDP -Action Allow
```

**Nota**  
Le configurazioni del firewall possono essere limitate dalla Domain Group Policy (GPO) o richiedere autorizzazioni di amministratore elevate. Se il comando fallisce, contatta l'amministratore di rete.

Inizia WinDbg con la porta e la chiave che corrispondono alla configurazione della destinazione di debug. È possibile specificare opzioni di debug del kernel aggiuntive documentate nel riferimento alla [riga di comando di WinDbg Microsoft](https://learn.microsoft.com/en-us/windows-hardware/drivers/debuggercmds/windbg-command-line-preview#kernel-options) in base al proprio caso d'uso.

```
windbgx -k net:port=port-number,key=encryption-key
```

WinDbg si apre e attende che il target di debug si connetta.

## Passaggio 4: riavviare la destinazione di debug
<a name="kdnet-step4-reboot-debug-target"></a>

Sulla destinazione di debug, riavvia l'istanza per avviare la connessione di debug:

```
shutdown -r -t 0
```

Dopo il riavvio della destinazione di debug, WinDbg sull'host di debug si connette automaticamente alla destinazione. È ora possibile utilizzarlo WinDbg per controllare lo stato del kernel, impostare i breakpoint e diagnosticare i problemi.

## Pulisci le impostazioni di debug dopo il debug
<a name="kdnet-clean-up"></a>

**Sulla destinazione di debug**  
Al termine del debug, rimuovete la configurazione di debug del kernel dalla destinazione di debug per ripristinare il normale comportamento di avvio. Sulla destinazione di debug, aprite una sessione con privilegi elevati ed eseguite i seguenti comandi: PowerShell 

```
bcdedit /debug off
bcdedit /dbgsettings LOCAL
bcdedit /deletevalue loadoptions
```

Se ne esistono di `loadoptions` diversi`FORCEHVTONOTSHAREDEBUGDEVICE`, è necessario ripristinare l'impostazione eseguendola `bcdedit /set loadoptions` con l'originale. `loadoptions`

Se hai abilitato il debug di avvio, esegui anche:

```
bcdedit /bootdebug off
```

Riavvia l'istanza per rendere effettive le modifiche.

**Sull'host di debug**  
Rimuovi la regola del firewall eseguendo:

```
Remove-NetFirewallRule -DisplayName "Allow Inbound KDNET Connection"
```

## Limitazioni
<a name="kdnet-limitations"></a>

Il modulo di estensibilità KDNET per ENA attualmente non supporta:
+ tipi di istanze x86\$164 non in metallo di ottava generazione (ad esempio,) `m8a.xlarge`
+ tipi di istanze x86\$164 non metalliche 48xlarge di settima generazione (ad esempio,) `m7a.48xlarge`
+ tipi di istanze u7i

Il modulo attualmente non supporta istanze con Secure Boot abilitato. È possibile verificare lo stato `Confirm-SecureBootUEFI` eseguendo una sessione con privilegi elevati. PowerShell Se l'output è`True`, Secure Boot è attivo. Tieni presente che tutte le immagini fornite da Amazon con un prefisso «TPM» hanno Secure Boot abilitato per impostazione predefinita.

## Note aggiuntive
<a name="kdnet-additional-notes"></a>

Se riscontri problemi di connessione del debugger all'istanza di destinazione, verifica quanto segue:
+ Tutti i prerequisiti elencati in questa guida sono soddisfatti, inclusa la versione build di Windows Server richiesta e la presenza del modulo di estensibilità.
+ I gruppi di sicurezza collegati a entrambe le istanze sono configurati correttamente per consentire il traffico tra di loro sulla porta di debug configurata.
+ Le regole di Windows Firewall sulle istanze host non bloccano il traffico di rete tra le due istanze sulla porta configurata.

Per ulteriori indicazioni, consulta [Configurare manualmente il debug del kernel di rete KDNET](https://learn.microsoft.com/en-us/windows-hardware/drivers/debugger/setting-up-a-network-debugging-connection) nella documentazione Microsoft.