Bagikan melalui


API Ekstensi Pemrograman Debugger

Bagian ini meliputi:

Gambaran Umum Mesin Debugger

Menggunakan API Mesin Debugger

Menulis Ekstensi DbgEng

Ekstensi EngExtCpp

Menulis Ekstensi WdbgExts

Menyesuaikan Output Debugger Menggunakan DML

Menggunakan JavaScript untuk Memperluas Kemampuan Debugger

Mengembangkan modul ekstensibilitas transportasi KDNET

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

Mesin Debugger

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

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.

Untuk informasi selengkapnya, lihat Gambaran Umum Mesin Debugger dan Menggunakan API Mesin Debugger.

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.

    Untuk informasi selengkapnya, lihat Menulis Ekstensi DbgEng.

  • 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. Untuk informasi selengkapnya lihat Menulis Ekstensi WdbgExts.

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

Semua ekstensi debugger harus dikompilasi dan dibuat menggunakan Visual Studio.

Sampel kode ekstensi diinstal sebagai bagian dari paket Alat Debugging untuk Windows jika Anda melakukan penginstalan kustom dan memilih komponen SDK dan semua subkomponennya. Mereka dapat ditemukan di subdirektori sdk\samples dari direktori Penginstalan Alat Debugging untuk 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 menjegal bahasa skrip ke model objek internal debugger. Penyedia skrip debugger JavaScript, memungkinkan penggunaan JavaScript dengan debugger. Untuk informasi selengkapnya, lihat Pembuatan Skrip JavaScript Debugger.

Mengembangkan modul ekstensibilitas transportasi KDNET

Transportasi KDNET dapat diperluas untuk berjalan pada perangkat keras apa pun melalui penggunaan dll modul ekstensibilitas driver perangkat keras terpisah. Modul ekstensibilitas transportasi KDNET dikembangkan oleh vendor kartu jaringan untuk menambahkan dukungan penelusuran kesalahan kernel ke kartu jaringan tertentu.

KDNET adalah transportasi debug kernel yang memungkinkan penelusuran kesalahan kernel jendela melalui jaringan. Ini dirancang sehingga lapisan dukungan perangkat keras dibangun ke dalam modul terpisah dari pemrosesan paket jaringan dan lapisan antarmuka kernel. Lapisan dukungan driver perangkat keras ini disebut modul ekstensibilitas KDNET. Untuk informasi selengkapnya, lihat Mengembangkan modul ekstensibilitas transportasi KDNET.