_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 を返します。エラーがキャッチされない場合エラーが発生した場合は 0 1。ただしレポートのコピー先がデバッグ メッセージ ウィンドウでRetry ユーザーがボタンをクリックするとこれらの関数は 1 を返します。. ユーザーがデバッグ メッセージの Abort ウィンドウのボタンをクリックするとこれらの関数は中止値を返しません。
デバッグを生成する _RPT_RPTF のデバッグ マクロは_CrtDbgReport によって報告されます。これらのマクロまたは [入力] _ASSERT E_RPTWn と _RPTFWn のデバッグ レポートを生成するにはを使用 _CrtDbgReportW のワイド文字バージョンです。_CrtDbgReport または _CrtDbgReportW は 1 を返しますがこれらのマクロ デバッガーを起動するとJust-In-Time デバッグが (JIT) 有効になります。
解説
_CrtDbgReport と _CrtDbgReportW は3 種類のターゲットにデバッグ レポートを送信する場合 : デバッグ レポート ファイルデバッグ モニター (Visual Studio デバッガー] の場合)またはデバッグ メッセージ ウィンドウ。2 種類の構成 _CrtSetReportMode 関数および _CrtSetReportFile が各レポートの種類ごとにターゲットを指定するために使用されます。これらの関数は個別に管理する各レポートの種類のレポートのコピー先ができます。たとえば _CRT_ASSERT の reportType はデバッグ メッセージ ウィンドウとユーザー定義のレポート ファイルに送信されますが_CRT_WARN のみの reportType がデバッグ モニターに送信されるように指定することがあります。
_CrtDbgReportW 関数は、_CrtDbgReport 関数のワイド文字バージョンです。パラメーターの文字列はすべてワイド文字列に含まれています ; それ以外の場合はバイト文字バージョンと同じものです。
_CrtDbgReport と _CrtDbgReportW は argument[入力]n 引数の置換によって printf または wprintf の関数によって定義されている規則を使用して format の文字列にデバッグ レポートのユーザー定義メッセージを作成します。これらの関数はデバッグ レポートを生成してreportType に対して定義されている現在のレポート モードとファイルに基づいて先を決定します。レポートのデバッグ メッセージ ウィンドウに送信すると filenamelineNumber と moduleName はウィンドウに表示される情報が含まれます。
次の表は _CrtDbgReport と _CrtDbgReportW のレポート モードの使用可能なオプションやモードとファイルの動作に示します。これらのオプションはCrtdbg.h でがビット フラグとして定義されます。
レポート モード |
レポート ファイル |
_CrtDbgReport の _CrtDbgReportW の動作 |
---|---|---|
_CRTDBG_MODE_DEBUG |
該当なし |
Windows API OutputDebugString にメッセージを書き込みます。 |
_CRTDBG_MODE_WNDW |
該当なし |
AbortRetry と Ignore のボタンとともにメッセージを表示するメッセージ ボックスを作成するための Windows API MessageBox。ユーザーが Abort をクリックすると_CrtDbgReport または _CrtDbgReport はすぐに中止します。ユーザーがをクリックするとRetry1. を返します。ユーザーが Ignore をクリックすると実行が _CrtDbgReport と _CrtDbgReportW は 0 を継続します。エラー条件が結果「未定義にする動作がある」と Ignore をクリックすることに注意してください。 |
_CRTDBG_MODE_FILE |
__HFILE |
メッセージをユーザーが指定した HANDLE(Windows WriteFile API を使用して記述しファイル ハンドルの有効性を検証できません ; アプリケーションではレポート ファイルを開き有効なファイル ハンドルを渡すために使用します。 |
_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> |
互換性の詳細については、「C ランタイム ライブラリ」の「互換性」を参照してください。
ライブラリ
C ランタイム ライブラリのデバッグ バージョンのみ。
使用例
// crt_crtdbgreport.c
#include <crtdbg.h>
int main() {
#ifdef _DEBUG
CrtDbgReport(_CRT_ASSERT, NULL, NULL, "some module", NULL);
#endif
}
レポート関数を変更する方法の例については crt_dbg2 を参照してください。