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
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.
Daftar Isi
Prasyarat
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, lihatMemulai dengan Amazon EC2.
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 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 kembaliTrue, modul tersedia.
Langkah 1: Instal Windows Debugging Tools pada host debug
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
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
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, 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
PerhatikanBusNumber,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-ipport:port-numberkey:encryption-keybusparams: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 dengandokumentasi 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 sebagaibus.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
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-numberNew-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
windbgx -k net:port=port-number,key=encryption-key
WinDbg membuka dan menunggu target debug terhubung.
Langkah 4: Reboot target debug
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
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 selainFORCEHVTONOTSHAREDEBUGDEVICE, Anda harus mengembalikan pengaturan dengan menjalankan bcdedit /set loadoptions dengan aslinyaloadoptions.
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
Modul ekstensibilitas KDNET untuk ENA saat ini tidak mendukung:
-
Jenis instans x86_64 non-logam generasi ke-8 (misalnya,)
m8a.xlarge -
Jenis instans x86_64 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 outputnyaTrue, Secure Boot aktif. Perhatikan bahwa semua gambar yang disediakan Amazon dengan awalan 'TPM' mengaktifkan Boot Aman secara default.
Catatan tambahan
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