| |||||||||||||||||||||||||||||||||||||||||||||||
サイト内検索
カスタム検索
|
CRT デバッグ拡張機能 ~ トレース機能CRT デバッグライブラリの有効化ビルドオプションMicrosoft のC コンパイラである Visual C++ の C Run-Time ライブラリにはデバッグ用の 拡張機能が組み込まれています。 これを利用するためには、コンパイラオプションとリンカオプションを設定します。 必要なリンカオプションは /DEBUG のみです。 コンパイラオプションは、/MDd、 /MTd または /LDd のいずれかを指定します。
表1: コンパイラオプション
/MLd 系 (=シングルスレッド) は使用されなくなりました。 ヘッダファイル<crtdbg.h> ヘッダをインクルードします。 トレース機能トレースタイプとトレースモードレポートタイプは次の三種類が指定できます。
レポートモードは次の三種類。
上記のタイプそれぞれについて、出力先を _CrtSetReportMode 関数で指定します。 また、ファイル出力の場合 (_CRTDBG_MODE_FILE の場合) はファイルを、 _CrtSetReportFile 関数で指定します。 例として 「_CRT_WARN タイプは標準エラーのみに出力」、 「_CRT_ERROR タイプはデバッグ出力及び標準エラーに出力」に設定する場合のコードを示します。
#include <crtdbg.h>
#include <stdio.h>
int main(int argc, char* argv[]) {
_CrtSetReportMode ( _CRT_WARN, _CRTDBG_MODE_FILE );
_CrtSetReportMode ( _CRT_ERROR, _CRTDBG_MODE_FILE | _CRTDBG_MODE_DEBUG );
_CrtSetReportFile ( _CRT_ERROR, _CRTDBG_FILE_STDERR );
_CrtSetReportFile ( _CRT_WARN, _CRTDBG_FILE_STDERR );
...
return 0;
}
トレースマクロ _RPTxCRT デバッグライブラリには、主に二系統のトレース用マクロが用意されています。
第一引数はレポートタイプ。第二引数はフォーマット文字列。それ以降は引数です。 第二引数以降は printf と同様です。 尚、RPTn マクロは _CrtDbgReport を内部で呼び出しています。 次のコードで動作確認をします。
#include <crtdbg.h>
#include <stdio.h>
int main(int argc, char* argv[]) {
_CrtSetReportMode ( _CRT_WARN, _CRTDBG_MODE_FILE );
_CrtSetReportMode ( _CRT_ERROR, _CRTDBG_MODE_FILE | _CRTDBG_MODE_DEBUG );
_CrtSetReportFile ( _CRT_ERROR, _CRTDBG_FILE_STDERR );
_CrtSetReportFile ( _CRT_WARN, _CRTDBG_FILE_STDERR );
_RPT0( _CRT_WARN, "Entering main\n" );
printf( "Hello, World\n" );
_RPTF0( _CRT_WARN, "Exit main\n" );
return 0;
}
この結果は次のようになります。 > test.exe Entering main Hello, World console_win32.cpp(16) : Exit main この他、CRT のデバッグ拡張機能には、デバッグヒープ等面白い機能が多数あります。 MSDN を見てみてください。当サイトでも機会があれば紹介したいと思います。 | ||||||||||||||||||||||||||||||||||||||||||||||
© 2008-2010 小山圭介 All Rights Reserved. |
|||||||||||||||||||||||||||||||||||||||||||||||