Bagikan melalui


Memulai penelusuran kesalahan Windows

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

Cuplikan layar dari diagram yang menunjukkan panah ganda yang menghubungkan host dan sistem debugging 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

Langkah berikutnya untuk penelusuran kesalahan mode pengguna

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:

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.

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):

Penelusuran kesalahan mode pengguna (untuk aplikasi):

Panduan penyiapan tambahan: