Отчетные функции-ловушки
Этот раздел применим к:
Выпуск |
Visual Basic |
C# |
F# |
C++ |
Web Developer |
---|---|---|---|---|---|
Express |
![]() |
![]() |
![]() |
Только машинные коды |
![]() |
Pro, Premium и Ultimate |
![]() |
![]() |
![]() |
Только машинные коды |
![]() |
Отчетные функции-ловушки, установленные с помощью _CrtSetReportHook, вызываются каждый раз при создании отчета отладки _CrtDbgReport. Помимо всего прочего их можно использовать для фильтрации отчетов, которые позволяют отобрать выделения конкретного типа. Отчетная функция-ловушка должна иметь следующий прототип:
int YourReportHook(int nRptType, char *szMsg, int *retVal);
Указатель, передаваемый _CrtSetReportHook, имеет тип _CRT_REPORT_HOOK, как определено в CRTDBG.H:
typedef int (__cdecl *_CRT_REPORT_HOOK)(int, char *, int *);
Когда CRT вызывает функцию-ловушку, аргумент nRptType содержит категорию отчета (_CRT_WARN, _CRT_ERROR или _CRT_ASSERT), szMsg содержит указатель на полностью собранную строку отчетного сообщения, а retVal задает значение, определяющее поведение _CrtDbgReport, который может продолжить обычное выполнение после создания отчета или запустить отладчик. (Значение retVal, равное нулю, позволяет продолжить выполнение, а значение 1 запускает отладчик.)
Если ловушка полностью обрабатывает сообщение и дальнейшая выдача отчета не требуется, она возвращает значение TRUE. Если возвращается значение FALSE, _CrtDbgReport будет дальше выдавать отчетные сообщения в обычном режиме.
См. также
Задачи
Образец crt_dbg2: отладочные функции-ловушки для среды выполнения C