Fungsi Output Debug
[Fitur yang terkait dengan halaman ini, DirectShow, adalah fitur warisan. Ini telah digantikan oleh MediaPlayer, IMFMediaEngine, dan Tangkapan Audio/Video di Media Foundation. Fitur-fitur tersebut telah dioptimalkan untuk Windows 10 dan Windows 11. Microsoft sangat menyarankan agar kode baru menggunakan MediaPlayer, IMFMediaEngine dan Audio/Video Capture di Media Foundation alih-alih DirectShow, jika memungkinkan. Microsoft menyarankan agar kode yang ada yang menggunakan API warisan ditulis ulang untuk menggunakan API baru jika memungkinkan.]
Kelas Dasar DirectShow menyediakan beberapa makro untuk menampilkan informasi penelusuran kesalahan.
Fungsi | Deskripsi |
---|---|
DbgCheckModuleLevel | Memeriksa apakah pengelogan diaktifkan untuk jenis dan tingkat pesan yang diberikan. |
DbgDumpObjectRegister | Menampilkan informasi tentang objek aktif. |
DbgInitialise | Menginisialisasi pustaka debug. |
DbgLog | Mengirim string ke lokasi output debug, jika pengelogan diaktifkan untuk jenis dan tingkat yang ditentukan. |
DbgOutString | Mengirim string ke lokasi output debug. |
DbgSetModuleLevel | Menyetel tingkat pengelogan untuk satu atau beberapa jenis pesan. |
DbgTerminate | Membersihkan pustaka debug. |
DisplayType | Mengirim informasi tentang jenis media ke lokasi output debug. |
DumpGraph | Mengirim informasi tentang grafik filter ke lokasi output debug. |
GuidNames | Array global yang berisi string yang mewakili GUID yang ditentukan dalam Uuids.h. |
NAMA | Menghasilkan string khusus debug. |
CATATAN | Mengirim string ke lokasi output debug. |
MENGINGATKAN | Menghasilkan pengingat pada waktu kompilasi. |
Kunci Registri
Fungsi output debug di DirectShow menggunakan sekumpulan kunci registri. Lokasi kunci registri ini tergantung pada versi Windows.
Sebelum Windows Vista, kunci penelusuran kesalahan terletak di bawah jalur berikut:
\ HKEY_LOCAL_MACHINEPERANGKAT LUNAK\Debug
Di Windows Vista atau yang lebih baru, mereka terletak di bawah jalur berikut:
\ HKEY_LOCAL_MACHINEPERANGKAT LUNAK\Microsoft\Directshow\Debug
Untuk filter pihak ketiga, lokasi bergantung pada versi Kelas Dasar DirectShow mana yang digunakan untuk membangun filter. Versi yang disertakan dalam Windows SDK untuk Windows Vista menggunakan jalur yang lebih baru. Versi sebelumnya menggunakan jalur yang lebih lama.
Dalam keterangan berikut, label <DebugRoot> digunakan untuk menunjukkan kedua jalur ini. Ganti jalur yang benar, tergantung pada versi Windows atau versi kelas dasar.
Pengelogan Debug
DirectShow menentukan beberapa jenis pesan, yang diperlihatkan dalam tabel berikut ini.
Nilai | Deskripsi |
---|---|
LOG_ERROR | Pemberitahuan kesalahan. |
LOG_LOCKING | Mengunci dan membuka kunci bagian penting. |
LOG_MEMORY | Alokasi memori, serta pembuatan dan penghancuran objek. |
LOG_TIMING | Pengukuran waktu dan performa. |
LOG_TRACE | Pelacakan panggilan umum. |
CUSTOM1 hingga CUSTOM5 | Tersedia untuk pesan debug kustom |
Setiap fungsi pengelogan debug DirectShow menentukan jenis pesan dan tingkat log. Pesan debug hanya ditampilkan ketika tingkat penelusuran kesalahan saat ini untuk jenis pesan tersebut sama dengan atau lebih besar dari tingkat yang ditentukan dalam fungsi pengelogan. Jika tidak, pesan diabaikan.
Misalnya, kode berikut menghasilkan string "Ini adalah pesan debug" jika tingkat LOG_TRACE adalah 3 atau lebih tinggi:
DbgLog((LOG_TRACE, 3, TEXT("This is a debug message")));
Setiap modul dapat mengatur tingkat penelusuran kesalahannya sendiri untuk setiap jenis pesan. ( Modul adalah DLL atau executable yang dapat dimuat menggunakan fungsi LoadLibrary .) Tingkat penelusuran kesalahan modul muncul di registri di bawah kunci berikut:
\ HKEY_LOCAL_MACHINE<DebugRoot>\<ModuleName>\<MessageType>
di mana <Jenis> Pesan adalah jenis pesan dikurangi "LOG_" awal; misalnya, LOCKING untuk pesan LOG_LOCKING. Saat modul dimuat, pustaka debug menemukan tingkat pengelogan modul di registri. Jika kunci registri tidak ada, pustaka debug membuatnya.
Modul juga dapat mengatur tingkatnya sendiri pada durasi, menggunakan fungsi DbgSetModuleLevel . Untuk mengirim pesan ke output debug, panggil makro DbgLog . Contoh berikut membuat pesan tipe LOG_TRACE tingkat 3:
Anda juga dapat menentukan tingkat pengelogan global, dengan kunci registri berikut:
\HKEY_LOCAL_MACHINE\<DebugRoot>\GLOBAL\<Message Type>
Pustaka debug menggunakan tingkat mana pun yang lebih besar, tingkat global atau tingkat modul.
Lokasi Keluaran Debug
Lokasi output debug ditentukan oleh kunci registri lain:
\ HKEY_LOCAL_MACHINELogToFile Nama \>Modile DebugRoot<><\
Jika nilai kunci ini adalah Console
, output masuk ke jendela konsol. Jika nilainya adalah Deb
, Debug
, Debugger
, atau string kosong, output masuk ke jendela debugger. Jika tidak, output ditulis ke file yang ditentukan oleh kunci registri.
Sebelum executable menggunakan pustaka debug DirectShow, ia harus memanggil fungsi DbgInitialise . Setelah itu, ia harus memanggil fungsi DbgTerminate . DLL tidak perlu memanggil fungsi-fungsi ini, karena titik entri DLL (ditentukan dalam pustaka kelas dasar) memanggilnya secara otomatis.
Topik terkait