デバッグ出力関数
Microsoft® DirectShow® 基底クラスはデバッグ情報表示用のいくつかのマクロを提供する。
要件
ヘッダー : Wxdebug.h 内で宣言し、Streams.h をインクルードする。
ライブラリ : Strmbase.lib (リテール ビルド) または Strmbasd.lib (デバッグ ビルド) を使う。
関数 | 説明 |
DbgCheckModuleLevel | 与えられたメッセージ タイプとレベルでロギングが可能かどうかをチェックする。 |
DbgDumpObjectRegister | アクティブなオブジェクトについての情報を表示する。 |
DbgInitialise | デバッグ ライブラリを初期化する。 |
DbgLog | 指定したタイプとレベルでロギング可能な場合は、デバッグ出力位置に文字列を送る。 |
DbgOutString | デバッグ出力位置に文字列を送る。 |
DbgSetModuleLevel | 1 つまたは複数のメッセージ タイプのロギング レベルを設定する。 |
DbgTerminate | デバッグ ライブラリをクリーン アップする。 |
DisplayType | メディア タイプについての情報をデバッグ出力位置に送る。 |
DumpGraph | フィルタ グラフについての情報をデバッグ出力位置に送る。 |
GuidNames | Uuids.h で定義されている GUID を表す文字列を含むグローバル配列。 |
NAME | デバッグ専用文字列を生成する。 |
NOTE | デバッグ出力位置に文字列を送る。 |
REMIND | コンパイル時に注意を生成する。 |
注意
DirectShow のデバッグ環境は、特定の種類のデバッグ情報だけを表示するよう設定できる。この機能で、問題をコード内の特定の範囲に絞ることができる。DirectShow は以下の表に示されるいくつかのメッセージタイプを定義する。
値 | 説明 |
LOG_ERROR | エラー通知。 |
LOG_LOCKING | クリティカル セクションのロックとアンロック。 |
LOG_MEMORY | メモリ割り当てと、オブジェクトの作成および破棄。 |
LOG_TIMING | タイミングとパフォーマンスの測定。 |
LOG_TRACE | 一般的な呼び出しトレース。 |
CUSTOM1 ~ CUSTOM5 | カスタム デバッグ メッセージ用に使用可能。 |
DirectShow デバッグ ロギング関数はそれぞれ、メッセージ タイプとログ レベルを指定する。デバッグ メッセージは、そのメッセージ タイプの現在のデバッグ レベルが、ロギング関数で指定したレベル以上の場合のみ表示される。それ以外の場合、メッセージは無視される。
たとえば次のコードは、LOG_TRACE レベルが 3 以上の場合に "This is a debug message" と出力する。
DbgLog((LOG_TRACE, 3, TEXT("This is a debug message")));
すべてのモジュールは各メッセージ タイプに対して自身のデバッグ レベルを設定できる。(モジュールは DLL または実行モジュールであり、Microsoft® Win32® LoadLibrary 関数を使って読み込まれる。) モジュールのデバッグ レベルは、レジストリの次のキーの下に表示される。
\HKEY_LOCAL_MACHINE\SOFTWARE\Debug\<Module Name>\<Message Type>
<Message Type> はメッセージ タイプから先頭の "LOG_" を取ったものである。たとえば、LOCKING は LOG_LOCKING メッセージとなる。モジュールが読み込まれると、デバッグ ライブラリはモジュールのロギング レベルをレジストリから検索する。レジストリ キーがないと、デバッグ ライブラリはそれを作成する。
モジュールは DbgSetModuleLevel 関数を使って、自身のレベルを実行時に設定することもできる。デバッグ出力にメッセージを送るには、DbgLog マクロを呼び出すこと。次の例はタイプ LOG_TRACE のレベル 3 メッセージを作成している :
また、以下のレジストリ キーを使って、グローバル ロギング レベルを指定できる。
\HKEY_LOCAL_MACHINE\SOFTWARE\Debug\GLOBAL\<Message Type>
デバッグ ライブラリは、グローバル レベルとモジュール レベルのどちらか高い方を使う。
デバッグ出力位置
デバッグ出力位置は別のレジストリ キーによって定義されている :
\HKEY_LOCAL_MACHINE\SOFTWARE\Debug\<Module Name>\LogToFile
このキーの値が Console の場合は、コンソール ウィンドウに出力される。この値が Deb、Deb、Debug、Debugger または空白文字列の場合は、デバッガ ウィンドウに出力される。それ以外の場合、出力はレジストリ キーで指定されたファイルに書き込まれる。
実行モジュールが DirectShow デバッグ ライブラリを使う前に、DbgInitialise 関数を呼び出さなければならない。最後に、DbgTerminate 関数を呼び出さなければならない。DLL エントリ ポイント (基底クラス ライブラリ内で定義) が自動的にこれらの関数を呼び出すため、DLL がこれらを呼び出す必要はない。