_CrtDbgReport, _CrtDbgReportW

デバッグ メッセージのあるレポートを生成し、3 つの宛先 (デバッグ バージョンのみ) にレポートを送信します。

構文

int _CrtDbgReport(
   int reportType,
   const char *filename,
   int linenumber,
   const char *moduleName,
   const char *format [,
   argument] ...
);
int _CrtDbgReportW(
   int reportType,
   const wchar_t *filename,
   int linenumber,
   const wchar_t *moduleName,
   const wchar_t *format [,
   argument] ...
);

パラメーター

reportType
レポートの種類: _CRT_WARN_CRT_ERROR、および _CRT_ASSERT

filename
アサート/レポートが発生したソース ファイル名へのポインターまたは NULL

lineNumber
アサート/レポートが発生したソース ファイル名の行番号または NULL

moduleName
アサートまたはレポートが発生したモジュール (.exe または .dll) 名へのポインター。

format
ユーザー メッセージの作成に使用される書式指定文字列へのポインター。

argument
format で使用される省略可能な代用引数。

戻り値

すべてのレポートの宛先について、 _CrtDbgReport_CrtDbgReportW エラーが発生した場合は -1、エラーが発生しなかった場合は -0 を返します。 ただし、レポートの宛先がデバッグ メッセージ ウィンドウで、ユーザーが [再試行] ボタンを選択すると、これらの関数は 1 を返します。 ユーザーが [デバッグ メッセージ] ウィンドウで [中止] ボタンを選択した場合、これらの関数はすぐに中止され、値は返されません。

デバッグ マクロは _RPT_RPTF デバッグ レポートを生成するために呼び出 _CrtDbgReport されます。 これらのマクロのワイド文字バージョンと共に、_ASSERTE_RPTW_ASSERTおよび_RPTFW、デバッグ レポートを生成するために使用_CrtDbgReportWします。 _CrtDbgReportW Just-In-Time (JIT) デバッグが有効になっている場合、または 1 を返すと_CrtDbgReport、これらのマクロによってデバッガーが開始されます。

解説

_CrtDbgReport デバッグ _CrtDbgReportW レポートは、デバッグ レポート ファイル、デバッグ モニター (Visual Studio デバッガー)、デバッグ メッセージ ウィンドウの 3 つの異なる宛先に送信できます。 2 つの構成関数と_CrtSetReportFile_CrtSetReportMode各レポートの種類の宛先を指定するために使用されます。 これらの関数では、各レポートの種類に対するレポートの宛先を個別に管理できます。 たとえば、1 _CRT_WARN つのファイルがデバッグ モニターにのみ送信され、reportTypeそのうちの 1 つがデバッグ メッセージ ウィンドウとユーザー定義レポート ファイルの_CRT_ASSERT両方に送信されるようにreportType指定できます。

_CrtDbgReportW 関数は、_CrtDbgReport 関数のワイド文字バージョンです。 すべての出力パラメーターと文字列パラメーターはワイド文字列に含まれています。それ以外の場合は、1 バイト文字バージョンと同じです。

_CrtDbgReportまたは関数で定義されているのと_CrtDbgReportW同じ規則を使用して、引数をargument[n]文字列に置きformat換えて、デバッグ レポートのユーザー メッセージをprintfwprintf作成します。 次にこれらの関数は、reportType に定義されている現在のレポート モードおよびファイルに基づいて、デバッグ レポートを生成し、宛先を決定します。 レポートがデバッグ メッセージ ウィンドウに送信される場合、ウィンドウに表示される情報には filenamelineNumber、および moduleName が含まれます。

次の表に、_CrtDbgReport および _CrtDbgReportW のレポート モードとファイルで使用できるオプションおよび結果の動作を示します。 これらのオプションは、<crtdbg.h> でビット フラグとして定義されています。

レポート モード レポート ファイル _CrtDbgReport および _CrtDbgReportW の動作
_CRTDBG_MODE_DEBUG 適用なし Windows OutputDebugString API を使用してメッセージを書き込みます。
_CRTDBG_MODE_WNDW 適用なし Windows MessageBox API を呼び出してメッセージ ボックスを作成し、中止、再試行無視のボタンと共にメッセージを表示します。 ユーザーが [中止] を選択した場合、_CrtDbgReportまたは_CrtDbgReport直ちに中止した場合。 ユーザーが [再試行] を選択すると、1 が返されます。 ユーザーが [無視] を選択した場合、実行は続行され、_CrtDbgReport0 が_CrtDbgReportW返されます。 エラー状態が存在する場合に無視選択すると、多くの場合、未定義の動作が発生します。
_CRTDBG_MODE_FILE __HFILE Windows WriteFile API を使用してユーザー指定HANDLEにメッセージを書き込み、ファイル ハンドルの有効性を確認しません。アプリケーションはレポート ファイルを開き、有効なファイル ハンドルを渡す役割を担います。
_CRTDBG_MODE_FILE _CRTDBG_FILE_STDERR stderr にメッセージを書き込みます。
_CRTDBG_MODE_FILE _CRTDBG_FILE_STDOUT stdout にメッセージを書き込みます。

レポートは 1 つ、2 つ、または 3 つの宛先に送信できます。またどの宛先にも送信しないこともできます。 レポート モードまたはモードとレポート ファイルの指定の詳細については、次の機能を_CrtSetReportMode_CrtSetReportFile参照してください。 デバッグ マクロとレポート関数の使用方法の詳細については、レポート用のマクロを参照してください

アプリケーションで提供される _CrtDbgReport よりも柔軟性が必要な場合は _CrtDbgReportW、独自のレポート関数を記述し、関数を使用して C ランタイム ライブラリ レポート メカニズムに _CrtSetReportHook フックできます。

必要条件

ルーチンによって返される値 必須ヘッダー
_CrtDbgReport <crtdbg.h>
_CrtDbgReportW <crtdbg.h>

_CrtDbgReport および _CrtDbgReportW は Microsoft 拡張機能です。 詳細については、「互換性」をご覧ください。

ライブラリ

C ランタイム ライブラリのデバッグ バージョンのみ。

// crt_crtdbgreport.c
#include <crtdbg.h>

int main(int argc, char *argv[]) {
#ifdef _DEBUG
   _CrtDbgReport(_CRT_ASSERT, __FILE__, __LINE__, argv[0], NULL);
#endif
}

レポート関数を変更する方法の例を参照してください crt_dbg2

関連項目

デバッグ ルーチン
_CrtSetReportMode
_CrtSetReportFile
printf, _printf_l, wprintf, _wprintf_l
_DEBUG