次の方法で共有


_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 を参照してください。

同等の .NET Framework 関数

参照

関連項目

デバッグ ルーチン

_CrtSetReportMode

_CrtSetReportFile

printf、_printf_l、wprintf、_wprintf_l

_DEBUG