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.
Artikel ini menjelaskan cara memulai penelusuran kesalahan Windows menggunakan WinDbg dan alat penelusuran kesalahan lainnya. Anda akan mempelajari cara:
- Pasang debugger dan siapkan sistem host dan target
- Konfigurasi lingkungan debug Anda
- Kuasai teknik debugging yang esensial untuk skenario mode kernel dan mode pengguna.
Nota: Jika Anda ingin menganalisis crash dump sebagai gantinya, lihat Menganalisis file crash dump dengan menggunakan WinDbg.
Untuk memulai debugging Windows, selesaikan langkah-langkah berikut.
1. Instal Windows Debugger
Instal WinDbg untuk mulai men-debug aplikasi dan driver Windows. Untuk langkah-langkah penginstalan terperinci, lihat Menginstal WinDbg.
2. Identifikasi host dan sistem target
Dua sistem komputer terpisah biasanya digunakan untuk penelusuran kesalahan karena eksekusi instruksi pada prosesor biasanya dijeda selama proses. Debugger berjalan pada sistem host, dan kode yang ingin Anda debug berjalan pada sistem target.
Host <--------------------------------------------------> Target
Dalam beberapa situasi, dimungkinkan untuk menggunakan komputer virtual sebagai sistem kedua. Misalnya, PC virtual dapat berjalan pada PC yang sama dengan kode yang perlu Anda debug. Namun, jika kode Anda berkomunikasi dengan perangkat keras tingkat rendah, menggunakan PC virtual mungkin bukan pendekatan terbaik. Untuk informasi lebih lanjut, lihat Menyiapkan debugging jaringan dari mesin virtual - KDNET.
3. Tentukan jenis debugger: mode kernel atau mode pengguna
Selanjutnya, Anda perlu menentukan apakah akan menggunakan debugging mode kernel atau mode pengguna.
Sistem operasi dan program istimewa berjalan dalam mode kernel . Kode mode kernel memiliki izin untuk mengakses bagian mana pun dari sistem, dan tidak dibatasi seperti kode mode pengguna. Kode mode kernel dapat mengakses bagian mana pun dari proses lain yang berjalan dalam mode pengguna atau mode kernel. Sebagian besar fungsionalitas OS inti dan banyak driver perangkat keras berjalan dalam mode kernel.
Aplikasi dan subsistem pada komputer berjalan dalam mode pengguna . Proses yang berjalan dalam mode pengguna melakukannya dalam ruang alamat virtual mereka sendiri. Mereka dibatasi untuk mendapatkan akses langsung ke banyak bagian sistem, termasuk perangkat keras sistem, memori yang tidak dialokasikan untuk penggunaannya, dan bagian lain dari sistem yang mungkin membahayakan integritas sistem. Proses yang berjalan dalam mode pengguna secara efektif diisolasi dari sistem dan dari proses mode pengguna lainnya, sehingga mereka tidak dapat mengganggu sumber daya ini.
Jika tujuan Anda adalah mendebug driver, tentukan apakah itu driver mode kernel atau mode pengguna. Windows Driver Model (WDM) dan Driver Framework Kernel-Mode (KMDF) keduanya adalah driver kernel mode. Seperti namanya, driver User-Mode Driver Framework (UMDF) adalah driver mode pengguna.
Untuk beberapa masalah, mungkin sulit untuk menentukan mode mana kode dijalankan. Dalam hal ini, Anda mungkin perlu memilih satu mode dan melihat informasi apa yang tersedia dalam mode tersebut. Beberapa masalah mengharuskan penggunaan debugger dalam mode pengguna dan mode kernel.
Bergantung pada mode mana Anda melakukan debug, Anda mungkin perlu mengonfigurasi dan menggunakan debugger dengan cara yang berbeda. Beberapa perintah penelusuran kesalahan beroperasi sama di kedua mode, dan beberapa perintah beroperasi secara berbeda.
Langkah selanjutnya untuk penelusuran kesalahan mode kernel
- Mulai menggunakan WinDbg (mode kernel) - Selesaikan penyiapan dan sesi debugging pertama
- Debug driver universal: praktik langkah demi langkah (mode kernel echo) - Lab praktis dengan driver echo
- Driver debug: lab langkah demi langkah (mode kernel Sysvad) - Lab langsung dengan driver audio
Langkah berikutnya untuk penelusuran kesalahan mode pengguna
- Mulai menggunakan WinDbg (mode pengguna) - Selesaikan penyiapan dan sesi debugging pertama
4. Pilih lingkungan debugger Anda
Debugger WinDbg berfungsi dengan baik di sebagian besar situasi, tetapi ada kalanya Anda mungkin ingin menggunakan debugger lain, seperti debugger konsol untuk otomatisasi atau Visual Studio. Untuk informasi selengkapnya, lihat lingkungan debugging .
5. Tentukan cara menyambungkan target dan host
Biasanya, Anda menghubungkan sistem target dan host dengan menggunakan jaringan Ethernet. Jika Anda melakukan pekerjaan persiapan awal, atau Anda tidak memiliki koneksi Ethernet pada perangkat, opsi koneksi jaringan lain juga tersedia. Untuk informasi selengkapnya, lihat artikel berikut ini:
- Menyiapkan penelusuran kesalahan kernel jaringan KDNET secara otomatis
- Menyiapkan pemecahan masalah jaringan untuk mesin virtual - KDNET
6. Pilih alat debugging 32-bit atau 64-bit
Apakah Anda memerlukan debugger 32-bit atau 64-bit tergantung pada versi Windows yang berjalan pada sistem target dan host, serta apakah Anda melakukan debug terhadap kode 32-bit atau 64-bit. Untuk informasi selengkapnya, lihat Memilih alat debugging 32-bit atau 64-bit.
7. Mengonfigurasi simbol
Untuk menggunakan semua fungsionalitas tingkat lanjut yang disediakan WinDbg, Anda harus memuat simbol yang tepat. Jika Anda tidak mengonfigurasi simbol dengan benar, Anda menerima pesan yang menunjukkan bahwa simbol tidak tersedia saat Anda mencoba menggunakan fungsionalitas yang bergantung pada simbol. Untuk informasi selengkapnya, lihat Simbol untuk debugging Windows.
8. Mengonfigurasi kode sumber
Jika tujuan Anda adalah men-debug kode sumber Anda sendiri, Anda perlu mengonfigurasi jalur ke kode sumber Anda. Untuk informasi selengkapnya, lihat jalur sumber.
9. Menjadi terbiasa dengan operasi debugger
Bagian dari dokumentasi ini tentang operasi Debugger menjelaskan operasi debugger untuk berbagai tugas. Misalnya, Menyimpan File Log di WinDbg menjelaskan bagaimana WinDbg dapat menulis file log yang mencatat sesi debugging.
10. Menjadi terbiasa dengan teknik debugging
Teknik debugging standar berlaku untuk sebagian besar skenario debugging, dan contohnya termasuk mengatur titik henti, memeriksa tumpukan panggilan, serta menemukan kebocoran memori. Teknik penelusuran kesalahan khusus berlaku untuk teknologi atau jenis kode tertentu. Contohnya termasuk penelusuran kesalahan Plug and Play, penelusuran kesalahan KMDF, dan penelusuran kesalahan RPC.
11. Gunakan perintah referensi debugger
Anda dapat menggunakan perintah debugging yang berbeda saat Anda bekerja di debugger. Untuk mendapatkan bantuan pada perintah apa pun saat debugging, gunakan perintah .hh yang diikuti dengan nama perintah.
Contoh:
.hh bp # Get help on breakpoint commands
.hh k # Get help on call stack commands
Untuk daftar lengkap perintah yang tersedia, lihat Referensi debugger.
12. Gunakan ekstensi penelusuran kesalahan untuk teknologi tertentu
Anda dapat menggunakan beberapa ekstensi debugging untuk mengurai struktur data khusus domain. Untuk informasi selengkapnya, lihat ekstensi khusus . Untuk informasi tentang cara memuat ekstensi debugger, lihat Memuat DLL ekstensi debugger.
13. Pelajari tentang internal Windows yang relevan
Dokumentasi ini mengasumsikan bahwa Anda memiliki beberapa pengetahuan tentang internal Windows inti. Untuk mempelajari selengkapnya tentang internal Windows, termasuk penggunaan memori, konteks, utas, dan proses, Anda dapat meninjau sumber daya seperti Windows Internals oleh Pavel Yosifovich, Mark E. Russinovich, David A. Solomon, dan Alex Ionescu.
14. Tinjau sumber daya debugging tambahan
Sumber daya lainnya termasuk buku dan video berikut:
- Inside Windows Debugging: Strategi Penelusuran Kesalahan dan Pelacakan Praktis oleh Tarik Soulami
- Debugging Windows Tingkat Lanjut oleh Mario Hewardt dan Daniel Pravat
- Defrag Tools seri video, episode 13 sampai 29, semuanya tentang WinDbg
Langkah selanjutnya
Pilih mode debugging Anda untuk melanjutkan.
Penelusuran kesalahan mode kernel (untuk driver dan komponen OS):
- Mulai menggunakan WinDbg (mode kernel)
- Debug driver universal - lab langkah demi langkah (mode kernel echo)
Penelusuran kesalahan mode pengguna (untuk aplikasi):
Panduan penyiapan tambahan: