

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Kernel debugging untuk instance Windows melalui jaringan
<a name="troubleshoot-windows-with-kdnet"></a>

Modul Ekstensibilitas KDNET untuk Adaptor Jaringan Elastis (ENA) adalah lapisan dukungan driver perangkat keras yang memungkinkan debugging kernel Windows melalui jaringan melalui ENA pada instans Amazon Elastic Compute Cloud. Anda dapat menggunakan modul ekstensibilitas dengan Windows Debugger (WinDbg) untuk melakukan debugging tingkat kernel pada instans EC2 yang menjalankan Windows.

Kernel debugging membantu Anda mendiagnosis dan memecahkan masalah sistem operasi tingkat rendah seperti kesalahan layar biru (BSOD), kegagalan driver, dan masalah boot pada instans EC2 Windows Anda.

**Topics**
+ [Prasyarat](#kdnet-prerequisites)
+ [Langkah 1: Instal Windows Debugging Tools pada host debug](#kdnet-step1-install-debugging-tools)
+ [Langkah 2: Siapkan target debug](#kdnet-step2-setup-debug-target)
+ [Langkah 3: Mulai sesi debugging pada host debug](#kdnet-step3-start-debugging-session)
+ [Langkah 4: Reboot target debug](#kdnet-step4-reboot-debug-target)
+ [Bersihkan pengaturan debug setelah debugging](#kdnet-clean-up)
+ [Batasan](#kdnet-limitations)
+ [Catatan tambahan](#kdnet-additional-notes)

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

Sebelum Anda mulai, pastikan Anda memiliki yang berikut:

Dua instance EC2 Windows, di subnet yang sama:
+ Sebuah instance **host debug** — menjalankan Windows Debugger (). WinDbg
+ Instance **target debug** — instance yang ingin Anda debug.

Untuk informasi selengkapnya tentang peluncuran instance, lihat[Memulai dengan Amazon EC2](EC2_GetStarted.md).

Grup keamanan untuk host dan instans target harus mengizinkan lalu lintas UDP masuk dan keluar pada port yang digunakan untuk debugging KDNET (kisaran yang disarankan: 50000—50039). Cara termudah untuk mengatur ini adalah dengan membuat grup keamanan dengan aturan masuk yang memungkinkan lalu lintas UDP dari dirinya sendiri sebagai sumbernya, dan kemudian melampirkan grup keamanan itu ke kedua instance. Untuk informasi selengkapnya, lihat [Aturan grup keamanan](https://docs.aws.amazon.com/vpc/latest/userguide/security-group-rules.html) di *Panduan Pengguna Amazon VPC*.

Instans target debug harus menjalankan salah satu versi Windows ini (atau yang lebih baru):
+ Windows Server 2025 dengan nomor build 26100.7462 (patch Desember 2025)
+ Windows 11 24H2 dengan nomor build 26100.7309
+ Windows 11 25H2 dengan nomor build 26200.7309

**catatan**  
Modul ekstensibilitas KDNET untuk ENA didistribusikan sebagai bagian dari Windows dan hanya dapat diperbarui melalui pembaruan kumulatif bulanan Windows. Kami menyarankan agar Windows KB terbaru diinstal pada target debug untuk memastikan Anda memiliki versi terbaru.  
Untuk memverifikasi bahwa modul hadir pada target debug, jalankan perintah berikut dalam PowerShell sesi yang ditinggikan:  

```
Test-Path C:\Windows\system32\kd_02_1d0f.dll
```
Jika perintah kembali`True`, modul tersedia.

## Langkah 1: Instal Windows Debugging Tools pada host debug
<a name="kdnet-step1-install-debugging-tools"></a>

Instal Windows Debugging Tools pada instance host debug dengan menjalankan perintah berikut dalam satu PowerShell sesi:

```
winget install microsoft.windbg
```

Untuk petunjuk penginstalan terperinci, lihat [Menginstal Debugger Windows](https://learn.microsoft.com/en-us/windows-hardware/drivers/debugger/) di dokumentasi Microsoft.

Setelah instalasi, verifikasi bahwa debugger bekerja dengan menjalankan perintah berikut dalam sesi: PowerShell 

```
windbgx
```

 WinDbg Jendela harus terbuka. Jika ya, instalasi berhasil dan Anda dapat menutup jendela.

## Langkah 2: Siapkan target debug
<a name="kdnet-step2-setup-debug-target"></a>

**catatan**  
Saat debugging kernel aktif, perangkat ENA yang digunakan untuk sesi debugging didedikasikan hanya untuk lalu lintas debugger. Jika Anda perlu mempertahankan akses internet pada instance target debug selama debugging, lampirkan ENA kedua ke instance sebelum Anda mulai.

Pada target debug, buka PowerShell sesi yang ditinggikan dan konfigurasikan debugging kernel menggunakan langkah-langkah berikut.

Jalankan perintah berikut untuk mencantumkan bus, perangkat, dan nomor fungsi adaptor ENA yang terpasang pada instance:

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

### Jika beberapa adaptor ENA dilampirkan ke instance
<a name="kdnet-multiple-ena-adapters"></a>

Jika beberapa adaptor ENA dilampirkan ke instance, gunakan perintah berikut untuk memetakan setiap adaptor fisik ke alamat IP pribadinya. Anda dapat mereferensikan detail ini di Konsol Manajemen AWS bawah **EC2 → Instans → [ID Instans] → Jaringan → Antarmuka jaringan**. Ini membantu Anda menghubungkan Antarmuka Jaringan tertentu IDs, pribadi IPs, dan grup keamanan dengan adaptor tingkat OS untuk debugging yang ditargetkan.

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

Perhatikan`BusNumber`,`DeviceNumber`, dan `FunctionNumber` nilai adaptor ENA yang akan digunakan untuk debugging dari output.

Jalankan perintah berikut untuk mengkonfigurasi debugging kernel. Ganti nilai placeholder dengan konfigurasi spesifik Anda:

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

**catatan**  
Periksa yang ada `loadoptions` dengan menjalankan perintah berikut. Jika nilai dikembalikan, salin string itu dan tambahkan `;FORCEHVTONOTSHAREDEBUGDEVICE` ke dalamnya.  

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

Di mana:
+ *host-private-ip*— IPv4 Alamat pribadi dari instance host debug. Jika instans Anda diluncurkan di subnet IPv6 -only, lihat [Menyiapkan KDNET dengan](https://learn.microsoft.com/en-us/windows-hardware/drivers/debugger/setting-up-a-network-debugging-connection#ipv6) dokumentasi Microsoft untuk mempelajari lebih lanjut IPv6 tentang penggunaan dengan KDNET. IPv6 
+ *port-number*— Port yang akan digunakan untuk sesi debugging. Kisaran yang disarankan adalah 50000—50039 (misalnya,). `50000`
+ *encryption-key*— Kunci 256-bit yang digunakan untuk mengenkripsi koneksi debugging, ditentukan sebagai empat nilai 64-bit yang dipisahkan oleh periode. Setiap nilai 64-bit dapat mencapai panjang 13 karakter hanya dengan menggunakan huruf kecil a—z dan angka 0-9. Karakter khusus tidak diperbolehkan. Contoh kunci enkripsi:`1kdnet2keys3.4kdnet5keys6.7kdnet8keys9.10kdnet11ke`.
+ *b.d.f*— Bus, perangkat, dan nomor fungsi untuk perangkat ENA, diformat sebagai `bus.device.function` (misalnya,`0.3.0`), digunakan untuk debugging.

**Tip**  
Untuk men-debug proses boot Windows, jalankan juga perintah berikut:  

```
bcdedit /bootdebug on
```

## Langkah 3: Mulai sesi debugging pada host debug
<a name="kdnet-step3-start-debugging-session"></a>

Untuk memungkinkan lalu lintas debugging pada host, Anda dapat membuat aturan firewall untuk WinDbg aplikasi atau port UDP tertentu.

**Opsi 1: Izinkan WinDbg aplikasi**  
Jalankan perintah berikut untuk mengotorisasi WinDbg executable:

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

**Opsi 2: Izinkan port UDP tertentu**  
Atau, Anda dapat mengizinkan lalu lintas UDP masuk ke port yang dikonfigurasi untuk debugging kernel. Ganti *port-number* dengan port KDNET pilihan Anda:

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

**catatan**  
Konfigurasi firewall mungkin dibatasi oleh Kebijakan Grup Domain (GPO) atau memerlukan izin Administrator yang lebih tinggi. Jika perintah gagal, hubungi administrator jaringan Anda.

Mulailah WinDbg dengan port dan kunci yang cocok dengan konfigurasi target debug. Anda dapat menentukan opsi debugging kernel tambahan yang didokumentasikan dalam [referensi baris WinDbg perintah Microsoft](https://learn.microsoft.com/en-us/windows-hardware/drivers/debuggercmds/windbg-command-line-preview#kernel-options) agar sesuai dengan kasus penggunaan Anda.

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

WinDbg membuka dan menunggu target debug terhubung.

## Langkah 4: Reboot target debug
<a name="kdnet-step4-reboot-debug-target"></a>

Pada target debug, restart instance untuk memulai koneksi debugging:

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

Setelah target debug dimulai ulang, WinDbg pada host debug terhubung ke target secara otomatis. Anda sekarang dapat menggunakan WinDbg untuk memeriksa status kernel, mengatur breakpoint, dan mendiagnosis masalah.

## Bersihkan pengaturan debug setelah debugging
<a name="kdnet-clean-up"></a>

**Pada target debug**  
Setelah Anda selesai debugging, hapus konfigurasi debugging kernel dari target debug untuk mengembalikan perilaku boot normal. Pada target debug, buka PowerShell sesi yang ditinggikan dan jalankan perintah berikut:

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

Jika Anda memiliki `loadoptions` selain`FORCEHVTONOTSHAREDEBUGDEVICE`, Anda harus mengembalikan pengaturan dengan menjalankan `bcdedit /set loadoptions` dengan aslinya`loadoptions`.

Jika Anda mengaktifkan boot debugging, jalankan juga:

```
bcdedit /bootdebug off
```

Mulai ulang instance agar perubahan diterapkan.

**Pada host debug**  
Hapus aturan firewall dengan menjalankan:

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

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

Modul ekstensibilitas KDNET untuk ENA saat ini tidak mendukung:
+ Jenis instans x86\$164 non-logam generasi ke-8 (misalnya,) `m8a.xlarge`
+ Jenis instans x86\$164 non-logam 48xlarge generasi ke-7 (misalnya,) `m7a.48xlarge`
+ jenis contoh u7i

Modul saat ini tidak mendukung instance dengan Boot Aman diaktifkan. Anda dapat memverifikasi status dengan menjalankan `Confirm-SecureBootUEFI` dalam PowerShell sesi yang ditinggikan. Jika outputnya`True`, Secure Boot aktif. Perhatikan bahwa semua gambar yang disediakan Amazon dengan awalan 'TPM' mengaktifkan Boot Aman secara default.

## Catatan tambahan
<a name="kdnet-additional-notes"></a>

Jika Anda mengalami masalah saat menghubungkan debugger ke instance target, verifikasi hal berikut:
+ Semua prasyarat yang tercantum dalam panduan ini terpenuhi, termasuk versi build Windows Server yang diperlukan dan keberadaan modul ekstensibilitas.
+ Grup keamanan yang dilampirkan ke kedua instance dikonfigurasi dengan benar untuk memungkinkan lalu lintas di antara mereka pada port debugging yang dikonfigurasi.
+ Aturan Windows Firewall pada instance host tidak memblokir lalu lintas jaringan antara dua instance pada port yang dikonfigurasi.

Untuk panduan tambahan, lihat [Mengatur debug kernel jaringan KDNET secara manual di dokumentasi](https://learn.microsoft.com/en-us/windows-hardware/drivers/debugger/setting-up-a-network-debugging-connection) Microsoft.