次の方法で共有


_CrtSetReportFile

_CRTDBG_MODE_FILE_CrtSetReportMode で指定すると、メッセージ テキストを受け取るファイル ハンドルを指定できます。 _CrtSetReportFile は、_CrtDbgReport、_CrtDbgReportW でテキストの出力先を指定するためにも使用します (デバッグ バージョンのみ)。

_HFILE _CrtSetReportFile( 
   int reportType,
   _HFILE reportFile 
);

パラメーター

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

  • reportFile
    reportType の新しいレポート ファイル。

戻り値

正常に実行された場合、_CrtSetReportFile は reportType で指定されたレポートの種類で前回定義されていたレポート ファイルを返します。 reportType に無効な値が渡されると、この関数は、「パラメーターの検証」に説明されているように、無効なパラメーター ハンドラーを呼び出します。 実行の継続が許可された場合、errno が EINVAL に設定され、関数から _CRTDBG_HFILE_ERROR が返されます。 詳細については、「errno、_doserrno、_sys_errlist、および _sys_nerr」を参照してください。

解説

_CrtSetReportFile_CrtSetReportMode 関数と組み合わせて、_CrtDbgReport が生成する特定のレポートの種類の出力先を定義するために使用します。 _CrtSetReportMode を呼び出して _CRTDBG_MODE_FILE レポート モードを特定のレポートの種類に割り当てた場合は、_CrtSetReportFile を呼び出して出力先となるファイルまたはストリームを定義する必要があります。 _DEBUG が未定義の場合、_CrtSetReportFile の呼び出しはプリプロセスで削除されます。

reportFile の選択肢と _CrtDbgReport の動作結果を次の表に示します。 これらのオプションは、Crtdbg.h でビット フラグとして定義されています。

  • file handle
    メッセージの出力先となるファイルへのハンドル。 ハンドルの有効性は検査されません。 ファイルへのハンドルは、アプリケーションで開いたり閉じたりする必要があります。 次に例を示します

       HANDLE hLogFile;
       hLogFile = CreateFile("c:\\log.txt", GENERIC_WRITE, 
          FILE_SHARE_WRITE, NULL, CREATE_ALWAYS, 
          FILE_ATTRIBUTE_NORMAL, NULL);
       _CrtSetReportMode(_CRT_WARN, _CRTDBG_MODE_FILE);
       _CrtSetReportFile(_CRT_WARN, hLogFile);
    
       _RPT0(_CRT_WARN,"file message\n");
       CloseHandle(hLogFile);
    
  • _CRTDBG_FILE_STDERR
    メッセージを stderr に書き込み、それを次のようにしてリダイレクトできます。

       freopen( "c:\\log2.txt", "w", stderr);
       _CrtSetReportMode(_CRT_ERROR, _CRTDBG_MODE_FILE);
       _CrtSetReportFile(_CRT_ERROR, _CRTDBG_FILE_STDERR);
    
       _RPT0(_CRT_ERROR,"1st message\n");
    
  • _CRTDBG_FILE_STDOUT
    メッセージを stdout に書き込み、それをリダイレクトできます。

  • _CRTDBG_REPORT_FILE
    現在のレポート モードを返します。

レポート ファイルは、レポートの種類ごとに制御できます。 たとえば、reportType が _CRT_ERROR の場合は stderr にレポートし、reportType が _CRT_ASSERT の場合はユーザー定義のファイル ハンドルまたはストリームにレポートできます。

必要条件

ルーチン

必須ヘッダー

オプション ヘッダー

_CrtSetReportFile

<crtdbg.h>

<errno.h>

互換性の詳細については、「C ランタイム ライブラリ」の「互換性」を参照してください。

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

使用例

report サンプル : C ランタイムのデバッグ レポート関数」を参照してください。

同等の .NET Framework 関数

該当なし標準 C 関数を呼び出すには、PInvoke を使用します。詳細については、「プラットフォーム呼び出しの例」を参照してください。

参照

参照

デバッグ ルーチン