_CrtDbgReport, _CrtDbgReportW

生成与调试消息的报告和发送报表到三个可能的目标 (请只调试版本)。

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,则不会遇到错误。 但是,那么,当报表目标是调试消息窗口时,用户单击 Retry 按钮,这些函数返回 1。 如果用户单击调试消息窗口中 Abort 按钮,这些功能中止和不返回值。

_RPT, _RPTF 调试宏调用 _CrtDbgReport 生成它们调试报告。 这些宏以及 _ASSERT [] E、 _RPTWn 和 _RPTFWn,使用 _CrtDbgReportW 的宽字符版本生成它们调试报告。 当 _CrtDbgReport 或 _CrtDbgReportW 返回 1 时,这些宏,启动调试器,在启用实时 (JIT)调试时条件下。

备注

_CrtDbgReport 和 _CrtDbgReportW 可以发送调试报告分成三个不同目标:调试报告文件、调试监视器 ( Visual Studio 调试器复制),或调试消息窗口。 两个配置功能, _CrtSetReportMode_CrtSetReportFile,用于指定为目标或每个报表的目标类型。 这些功能允许报告目标或目标的单独进行控制的每个报表类型。 例如,指定是可能的仅 _CRT_WARNreportType 发送到调试监视器,,而 _CRT_ASSERTreportType 发送到调试消息窗口和用户定义的报告文件。

_CrtDbgReportW 是 _CrtDbgReport的宽字符版本。 所有其输出和字符串参数在宽字符字符串;否则它与单字节字符版本相同。

_CrtDbgReport 和 _CrtDbgReportW 通过替换 argumentn[] 参数创建调试报告的用户邮件。 format 字符串,则使用 printf 或 wprintf 函数定义的规则相同。 这些函数然后生成调试报表并根据为 reportType和文件确定目标或目标,定义的当前报告模式。 当该报告发送到调试消息窗口时, filename、 lineNumber和 moduleName 在窗口中显示的信息包括。

下表列出了报表模式可用的选项或模式和文件和 _CrtDbgReport 和 _CrtDbgReportW发生的行为。 这些选项定义为 Crtdbg.h 的位标志。

报告模式

报告文件

_CrtDbgReport, _CrtDbgReportW 行为

_CRTDBG_MODE_DEBUG

不适用

对于 windows OutputDebugString API 编写消息。

_CRTDBG_MODE_WNDW

不适用

调用 windows API MessageBox 创建消息框与 Abort、 Retry和 Ignore 按钮时显示消息。 如果用户单击 Abort, _CrtDbgReport 或 _CrtDbgReport 中止。 如果用户单击 Retry,则返回 1。 如果用户单击 Ignore,则继续执行,并 _CrtDbgReport 和 _CrtDbgReportW 返回 0。 请注意,单击 " Ignore ,当错误条件存在结果在 “通常未定义的行为时”。

_CRTDBG_MODE_FILE

__HFILE

为用户提供的 HANDLE编写消息,使用窗口 WriteFile API,并且不验证文件句柄有效性;应用程序以打开报告文件并将有效的文件句柄负责。

_CRTDBG_MODE_FILE

_CRTDBG_FILE_STDERR

为 stderr的写入消息。

_CRTDBG_MODE_FILE

_CRTDBG_FILE_STDOUT

为 stdout的写入消息。

该报表可以发送到一个,两个或三个目标或到没有目标。 有关指定报表模式或模式和报告文件的更多信息,请参见 _CrtSetReportMode_CrtSetReportFile 功能。 有关使用调试宏和报告功能的更多信息,请参见 使用验证或报告的宏

如果应用程序的 _CrtDbgReport 和 _CrtDbgReportW所提供的) 需要更大的灵活性,使用 _CrtSetReportHook 功能,可以编写拥有报告功能和挂钩到 C 运行库报告机制。

要求

实例

必需的头

_CrtDbgReport

crtdbg.h

_CrtDbgReportW

crtdbg.h

有关更多兼容性信息,请参见中介绍的 兼容性

只调试 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