Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Создает отчет с сообщением об отладке и отправляет его в три возможных назначения (только отладочная версия).
Синтаксис
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