Pengantar Mesin Debugger

Dokumentasi ini menjelaskan cara menggunakan mesin debugger dan cara menulis ekstensi yang akan berjalan di WinDbg, KD, CDB, dan NTSD. Ekstensi debugger ini dapat digunakan saat melakukan debugging mode pengguna atau mode kernel di Microsoft Windows.

Mesin Debugger

Mesin debugger menyediakan antarmuka untuk memeriksa dan memanipulasi target penelusuran kesalahan dalam mode pengguna dan mode kernel di Microsoft Windows.

Mesin debugger dapat memperoleh target, mengatur titik henti, memantau peristiwa, simbol kueri, membaca dan menulis memori, serta mengontrol utas dan proses dalam target.

Anda dapat menggunakan mesin debugger untuk menulis pustaka ekstensi debugger dan aplikasi yang berdiri sendiri. Aplikasi tersebut adalah aplikasi mesin debugger. Aplikasi mesin debugger yang menggunakan fungsionalitas penuh mesin debugger adalah debugger. Misalnya, WinDbg, CDB, NTSD, dan KD adalah debugger; mesin debugger menyediakan inti fungsionalitasnya.

API mesin debugger ditentukan oleh prototipe dalam file header dbgeng.h.

Dokumentasi Tidak Lengkap

Ini adalah dokumen awal dan saat ini tidak lengkap.

Untuk banyak konsep yang berkaitan dengan debugger dan mesin debugger yang belum didokumentasikan di sini, lihat di bagian Teknik Debugging dari dokumentasi ini.

Untuk mendapatkan beberapa fungsionalitas API mesin debugger yang saat ini tidak terdokumentasi, gunakan metode Jalankan untuk menjalankan perintah debugger individual.

Ekstensi

Anda dapat membuat perintah penelusuran kesalahan Anda sendiri dengan menulis dan membangun DLL ekstensi. Misalnya, Anda mungkin ingin menulis perintah ekstensi untuk menampilkan struktur data yang kompleks.

Ada tiga jenis DLL ekstensi debugger yang berbeda:

  • DLL ekstensi DbgEng. Ini didasarkan pada prototipe dalam file header dbgeng.h. Setiap DLL jenis ini dapat mengekspor perintah ekstensi DbgEng. Perintah ekstensi ini menggunakan API Mesin Debugger dan juga dapat menggunakan API WdbgExts.

  • DLL ekstensi EngExtCpp. Ini didasarkan pada prototipe dalam file header engextcpp.h dan dbgeng.h. Setiap DLL jenis ini dapat mengekspor perintah ekstensi DbgEng. Perintah ekstensi ini menggunakan API Mesin Debugger dan kerangka kerja ekstensi EngExtCpp, dan juga dapat menggunakan API WdbgExts.

  • DLL ekstensi WdbgExts. Ini didasarkan pada prototipe dalam file header wdbgexts.h. Setiap DLL jenis ini mengekspor satu atau beberapa perintah ekstensi WdbgExts. Perintah ekstensi ini menggunakan WdbgExts API secara eksklusif.

DbgEng API dapat digunakan untuk membuat ekstensi atau aplikasi yang berdiri sendiri. WdbgExts API berisi subset fungsionalitas API mesin debugger dan hanya dapat digunakan oleh ekstensi.

Semua ekstensi debugger harus dikompilasi dan dibangun dengan menggunakan utilitas Build. Utilitas Build disertakan dalam Windows Driver Kit (WDK).

Sampel kode ekstensi diinstal sebagai bagian dari paket Alat Penelusuran Kesalahan untuk Windows jika Anda melakukan penginstalan kustom dan memilih komponen SDK dan semua subkomponennya. Mereka dapat ditemukan di subdirektori sdk\samples dari Alat Debugging untuk direktori penginstalan Windows.

Cara termampu untuk menulis ekstensi debugger baru adalah dengan mempelajari ekstensi sampel. Setiap ekstensi sampel mencakup file makefile dan sumber untuk digunakan dengan utilitas Build. Kedua jenis ekstensi diwakili dalam sampel.

Menulis Ekstensi Debugger Analisis Kustom

Anda dapat memperluas kemampuan perintah !analyze debugger dengan menulis plugin ekstensi analisis. Dengan menyediakan plugin ekstensi analisis, Anda dapat berpartisipasi dalam analisis pemeriksaan bug atau pengecualian dengan cara yang khusus untuk komponen atau aplikasi Anda sendiri. Ketika Anda menulis plugin ekstensi analisis, Anda juga menulis file metadata yang menjelaskan situasi di mana Anda ingin plugin Anda dipanggil. Ketika !analyze berjalan, ia menemukan, memuat, dan menjalankan plugin ekstensi analisis yang sesuai. Untuk informasi selengkapnya, lihat Menulis Ekstensi Debugger Analisis Kustom

Menyesuaikan Output Debugger Menggunakan DML

Anda dapat menyesuaikan output debugger menggunakan DML. Untuk informasi selengkapnya, lihat Menyesuaikan Output Debugger Menggunakan DML.

Menggunakan JavaScript untuk Memperluas Kemampuan Debugger

Gunakan JavaScript untuk membuat skrip yang memahami objek debugger dan memperluas dan menyesuaikan kemampuan debugger. Penyedia JavaScript menjembungkan bahasa skrip ke model objek internal debugger. Penyedia skrip debugger JavaScript, memungkinkan penggunaan JavaScript dengan debugger. Untuk informasi selengkapnya, lihat Pembuatan Skrip JavaScript Debugger.