_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_l
wprintf
_wprintf_l
_DEBUG