Menggunakan Debugger dan Logexts.dll

Salah satu cara untuk mengaktifkan Logger adalah dengan memulai CDB atau WinDbg dan melampirkan ke aplikasi target mode pengguna seperti biasa. Kemudian, gunakan perintah ekstensi !logexts.logi atau !logexts.loge .

Ini akan menyisipkan kode pada titik henti saat ini yang akan melompat ke rutinitas yang memuat dan menginisialisasi Logexts.dll dalam proses aplikasi target. Ini disebut sebagai "menyuntikkan Logger ke dalam aplikasi target."

Sebenarnya akan ada dua instans Logexts.dll berjalan, karena modul ini adalah DLL ekstensi debugger dan program yang disuntikkan ke dalam aplikasi target. Debugger dan instans target Logexts.dll berkomunikasi melalui bagian memori bersama yang mencakup handel file output, masker kategori saat ini, dan penunjuk ke buffer output log.

Melampirkan ke Aplikasi Target

Untuk informasi tentang melampirkan debugger ke aplikasi target, lihat Men-debug Proses User-Mode Menggunakan WinDbg atau Men-debug Proses User-Mode Menggunakan CDB.

Menggunakan Perintah Ekstensi Pencatat

Untuk sintaks lengkap setiap ekstensi, lihat halaman referensinya.

!logexts.logi
Menyuntikkan Logger ke dalam aplikasi target. Ini menginisialisasi pengelogan, tetapi tidak mengaktifkannya.

!logexts.loge
Memungkinkan pengelogan. Jika !logexts.logi belum digunakan, ekstensi ini akan menginisialisasi lalu mengaktifkan pengelogan.

!logexts.logd
Menonaktifkan pengelogan. Ini akan menyebabkan semua kait API dihapus dalam upaya untuk memungkinkan program berjalan dengan bebas. Kait COM tidak dihapus karena tidak dapat diaktifkan kembali sesering mungkin.

!logexts.logo
Menampilkan atau memodifikasi opsi output. Tiga jenis output dimungkinkan: pesan yang dikirim langsung ke debugger, file teks, atau file .lgv. File .lgv berisi lebih banyak informasi daripada dua lainnya; dapat dibaca dengan LogViewer.

Jika Anda menonaktifkan output file teks, file .txt ukuran nol akan tetap dibuat. Ini dapat menimpa file teks yang disimpan sebelumnya di lokasi yang sama.

!logexts.logc
Menampilkan kategori API yang tersedia, mengontrol kategori mana yang akan dicatat dan mana yang tidak akan, dan menampilkan API yang terkandung dalam kategori apa pun.

Jika kategori dinonaktifkan, kait untuk semua API dalam kategori tersebut akan dihapus sehingga tidak ada lagi overhead performa. Kait COM tidak dihapus karena tidak dapat diaktifkan kembali sesering mungkin.

Mengaktifkan hanya kategori tertentu yang dapat berguna ketika Anda hanya tertarik pada jenis interaksi tertentu yang dilakukan program dengan Windows -- misalnya, operasi file. Ini mengurangi ukuran file log dan juga mengurangi efek yang dimiliki Logger pada kecepatan eksekusi proses.

!logexts.logb
Menampilkan atau menghapus buffer output saat ini. Sebagai pertimbangan performa, output log dihapus ke disk hanya ketika buffer output penuh. Secara default, buffer adalah 2144 byte.

Karena memori buffer dikelola oleh aplikasi target, penulisan otomatis buffer ke file log pada disk tidak akan terjadi jika ada pelanggaran akses atau beberapa kesalahan lain yang tidak dapat dipulihkan dalam aplikasi target. Dalam kasus seperti itu, Anda harus menggunakan perintah ini untuk menghapus buffer secara manual ke disk, atau API yang terakhir dicatat mungkin tidak muncul di file log.

!logexts.logm
Menampilkan atau membuat daftar penyertaan/pengecualian modul. Seringkali diinginkan untuk hanya mencatat panggilan API yang dibuat dari modul atau set modul tertentu. Untuk memfasilitasi itu, Logger memungkinkan Anda menentukan daftar penyertaan modul atau, atau, sebagai alternatif, daftar pengecualian modul. Misalnya, Anda akan menggunakan daftar inklusi jika Anda hanya ingin mencatat panggilan dari satu atau dua modul. Jika Anda ingin mencatat panggilan yang dilakukan dari semua modul kecuali daftar singkat modul, Anda akan menggunakan daftar pengecualian. Modul Logexts.dll dan Kernel32.dll selalu dikecualikan, karena Logger tidak diizinkan untuk mencatat dirinya sendiri.