Поделиться через


_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.

Возвращаемое значение

Для всех назначений отчета и возвращает значение -1, _CrtDbgReport если возникает ошибка, и _CrtDbgReportW 0, если ошибки не возникают. Однако, когда назначение отчета является окном сообщения отладки и пользователь выбирает кнопку повтора , эти функции возвращают 1. Если пользователь выбирает кнопку "Прерывание" в окне "Сообщение отладки", эти функции немедленно прерывают и не возвращают значение.

_RPTF Вызов _RPTмакросов отладки для создания отчетов отладки_CrtDbgReport. Широко символьные версии этих макросов, _ASSERTE_RPTW_ASSERT_RPTFWа также и , используемые _CrtDbgReportW для создания отчетов отладки. При _CrtDbgReport возврате _CrtDbgReportW 1 эти макросы запускают отладчик, если включена JIT-отладка.

Замечания

_CrtDbgReport и _CrtDbgReportW может отправлять отчет отладки в три разных назначения: файл отчета отладки, монитор отладки (отладчик Visual Studio) или окно сообщения отладки. Две функции _CrtSetReportMode конфигурации и _CrtSetReportFileиспользуются для указания назначения или назначения для каждого типа отчета. Эти функции позволяют управлять назначением или назначениями для каждого типа отчета по отдельности. Например, можно указать, что только reportType _CRT_WARN передается в монитор отладки, а также reportType _CRT_ASSERT в окно отладки и в файл отчета, определяемого пользователем.

_CrtDbgReportW — версия _CrtDbgReport с расширенными символами. Все выходные и строковые параметры находятся в строках с широкими символами; в противном случае она идентична однобайтовой версии символов.

_CrtDbgReport и _CrtDbgReportW создайте сообщение пользователя для отчета отладки, подставив argument[n] аргументы в format строку, используя те же правила, определенные printf или wprintf функции. Затем эти функции создают отчет об отладке и определяют назначение (назначения) в зависимости от текущих режимов отчета и файла, заданных для reportType. Когда отчет отправляется в окно с сообщением об отладке, filename, lineNumber и moduleName включаются в набор сведений, которые отображаются в окне.

В таблице ниже приведен список доступных вариантов для режима или режимов отчета и файла, а также поведение, которое является результатом функций _CrtDbgReport и _CrtDbgReportW. Эти параметры определяются как битовые флаги в <crtdbg.h>.

Режим отчета Файл отчета Поведение _CrtDbgReport, _CrtDbgReportW
_CRTDBG_MODE_DEBUG Нет данных Записывает сообщение с помощью API Windows OutputDebugString .
_CRTDBG_MODE_WNDW Нет данных Вызывает API Windows MessageBox , чтобы создать окно сообщения для отображения сообщения вместе с кнопками "Прерывание", "Повтор" и "Игнорировать ". Если пользователь выбирает прерывание или _CrtDbgReport _CrtDbgReport немедленно прерывает. Если пользователь выбирает повторную попытку, он возвращает значение 1. Если пользователь выбирает "Игнорировать", выполнение продолжается и _CrtDbgReportW _CrtDbgReport возвращает 0. Выбор "Игнорировать" , когда условие ошибки существует, часто приводит к неопределенному поведению.
_CRTDBG_MODE_FILE __HFILE Записывает сообщение в предоставленное HANDLEпользователем сообщение с помощью API Windows WriteFile и не проверяет допустимость дескриптора файлов. Приложение отвечает за открытие файла отчета и передачу допустимого дескриптора файлов.
_CRTDBG_MODE_FILE _CRTDBG_FILE_STDERR Записывает сообщение в stderr.
_CRTDBG_MODE_FILE _CRTDBG_FILE_STDOUT Записывает сообщение в stdout.

Этот отчет можно отправить в одно, два или три назначения (или ни в одно из назначений). Дополнительные сведения об указании режима отчета или режима и файла отчета см. в _CrtSetReportMode разделе и _CrtSetReportFile функции. Дополнительные сведения об использовании макросов отладки и функций отчетов см. в разделе "Макросы" для создания отчетов.

Если приложению требуется больше гибкости, чем это предусмотрено _CrtDbgReport , _CrtDbgReportWи вы можете написать собственную функцию отчетности и подключить ее в механизм отчетности библиотеки времени выполнения C с помощью _CrtSetReportHook функции.

Требования

Маршрут Обязательный заголовок
_CrtDbgReport <crtdbg.h>
_CrtDbgReportW <crtdbg.h>

_CrtDbgReport и _CrtDbgReportW являются расширениями Майкрософт. Дополнительные сведения см. в разделе Совместимость.

Библиотеки

Только отладочные версии библиотек времени выполнения языка 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_lwprintf_wprintf_l
_DEBUG