Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Dimungkinkan untuk melakukan debugging kernel lokal dengan memulai debugger kernel (KD) atau WinDbg dengan opsi baris perintah
kd [-y SymbolPath] -kl
atau
windbg [-y SymbolPath] -kl
Di Windows Vista dan yang lebih baru, debugging kernel lokal mengharuskan komputer di-boot dengan opsi /debug. Buka Jendela Prompt Perintah sebagai Administrator, dan masukkan bcdedit /debug di. Reboot komputer.
Penting
Sebelum menggunakan BCDEdit untuk mengubah informasi boot, Anda mungkin perlu menangguhkan sementara fitur keamanan Windows seperti BitLocker dan Boot Aman pada PC pengujian. Aktifkan kembali fitur keamanan ini saat pengujian selesai dan kelola PC pengujian dengan tepat, saat fitur keamanan dinonaktifkan.
Di Windows Vista dan versi yang lebih baru, penelusuran kesalahan kernel lokal mengharuskan debugger dijalankan dengan hak Administrator.
Debugging lokal langsung interaktif sangat berguna untuk men-debug masalah yang sulit direproduksi ketika debugger terpasang; namun, apa pun yang memerlukan pengetahuan tentang informasi sensitif terhadap waktu, termasuk paket, IRP, dan data SRB, tidak mungkin berfungsi kecuali masalahnya adalah macet atau terhenti.
Saat melakukan debug lokal, pertimbangkan variabel berikut:
Status keseluruhan. Misalnya, apakah siaran berjalan? Apakah aliran dijeda?
Jumlah paket. Misalnya, apakah ada IRP yang diantrekan ke aliran data?
Perubahan jumlah paket. Apakah aliran bergerak?
Perubahan dalam daftar paket.
Kernel thread tergantung.
Pertimbangkan yang terakhir dari ini.
Memeriksa Utas Hung di LKD
Pertama, gunakan ekstensi !process 0 0 untuk mengidentifikasi proses yang berisi utas gantung. Kemudian, jalankan !process sekali lagi untuk informasi lebih lanjut tentang utas tersebut.
lkd> !process 816a550 7
THREAD 81705da8 Cid 0b5c.0b60 Teb: 7ffde000 Win32Thread: e1b2d890 WAIT: (Suspended)
IRP List:
816c9ad8: (0006,0190) Flags: 00000030 Mdl: 00000000
Start Address kernel32!BaseProcessStartThunk (0x77e5c650)
Win32 Start Address 0x0101c9be
Stack Init f50bf000 Current f50bea74 Base f50bf000 Limit f50b9000 Call 0
Priority 10 BasePriority 8 PriorityDecrement 0
Utas tidak ditampilkan, tetapi alamat stack ditampilkan. Menggunakan perintah dds (atau ddq) pada alamat saat ini pada tumpukan menghasilkan titik awal untuk penyelidikan lebih lanjut, karena menentukan proses mana yang memanggil.
lkd> dds f50bea74
f50bea74 f50bebc4
f50bea78 00000000
f50bea7c 80805795 nt!KiSwapContext+0x25
f50beab4 8080ece0 nt!KeWaitForSingleObject
f50beabc f942afda ks!CKsQueue::CancelAllIrps+0x14
f50bead8 f94406c4 ks!CKsQueue::SetDeviceState+0x170
f50beb00 f943f6f1 ks!CKsPipeSection::DistributeDeviceStateChange+0x1d
f50beb24 f943fb1e ks!CKsPipeSection::SetDeviceState+0xb2