_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
換えて、デバッグ レポートのユーザー メッセージをprintf
wprintf
作成します。 次にこれらの関数は、reportType
に定義されている現在のレポート モードおよびファイルに基づいて、デバッグ レポートを生成し、宛先を決定します。 レポートがデバッグ メッセージ ウィンドウに送信される場合、ウィンドウに表示される情報には filename
、lineNumber
、および moduleName
が含まれます。
次の表に、_CrtDbgReport
および _CrtDbgReportW
のレポート モードとファイルで使用できるオプションおよび結果の動作を示します。 これらのオプションは、<crtdbg.h> でビット フラグとして定義されています。
レポート モード | レポート ファイル | _CrtDbgReport および _CrtDbgReportW の動作 |
---|---|---|
_CRTDBG_MODE_DEBUG |
適用なし | Windows OutputDebugString API を使用してメッセージを書き込みます。 |
_CRTDBG_MODE_WNDW |
適用なし | Windows MessageBox API を呼び出してメッセージ ボックスを作成し、中止、再試行、無視のボタンと共にメッセージを表示します。 ユーザーが [中止] を選択した場合、_CrtDbgReport または_CrtDbgReport 直ちに中止した場合。 ユーザーが [再試行] を選択すると、1 が返されます。 ユーザーが [無視] を選択した場合、実行は続行され、_CrtDbgReport 0 が_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
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示