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


_CrtSetReportFile

После использования _CrtSetReportMode для определения _CRTDBG_MODE_FILE можно указать дескриптор файла для получения текста сообщения. _CrtSetReportFile также используется _CrtDbgReport, _CrtDbgReportW, чтобы определить назначение текста (только в отладочной версии).

_HFILE _CrtSetReportFile( 
   int reportType,
   _HFILE reportFile 
);

Параметры

  • reportType
    Тип отчета: _CRT_WARN, _CRT_ERROR и _CRT_ASSERT.

  • reportFile
    Новый файл отчета для reportType.

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

При успешном завершении _CrtSetReportFile возвращает предыдущий файл отчета, определенный для типа отчета, указанного в reportType. Если недопустимое значение передается как reportType, эта функция вызывает обработчик недопустимого параметра, как описано в разделе Проверка параметров. Если продолжение выполнения разрешено, то errno устанавливается в EINVAL, и функция возвращает _CRTDBG_HFILE_ERROR. Дополнительные сведения см. в разделе errno, _doserrno, _sys_errlist, and _sys_nerr.

Заметки

_CrtSetReportFile используется с функцией _CrtSetReportMode, чтобы определить назначение или назначения для определенного типа отчета, созданного _CrtDbgReport. При вызове _CrtSetReportMode с целью установки режима отчетов _CRTDBG_MODE_FILE для определенного типа отчетов следует затем вызвать _CrtSetReportFile, чтобы определить конкретный файл или поток для использования в качестве назначения. Если _DEBUG не определен, то вызовы _CrtSetReportFile удаляются во время предварительной обработки.

В следующей таблице приведен список доступных вариантов для reportFile и результирующее поведение _CrtDbgReport. Эти параметры задаются в виде битовых флагов в Crtdbg.h.

  • file handle
    Дескриптор файла, предназначенного для сообщений. Попытка проверить допустимость дескриптора не предпринимается. Необходимо открыть и закрыть дескриптор файла. Примеры.

       HANDLE hLogFile;
       hLogFile = CreateFile("c:\\log.txt", GENERIC_WRITE, 
          FILE_SHARE_WRITE, NULL, CREATE_ALWAYS, 
          FILE_ATTRIBUTE_NORMAL, NULL);
       _CrtSetReportMode(_CRT_WARN, _CRTDBG_MODE_FILE);
       _CrtSetReportFile(_CRT_WARN, hLogFile);
    
       _RPT0(_CRT_WARN,"file message\n");
       CloseHandle(hLogFile);
    
  • _CRTDBG_FILE_STDERR
    Записывает сообщение в stderr, который можно перенаправить следующим образом:

       freopen( "c:\\log2.txt", "w", stderr);
       _CrtSetReportMode(_CRT_ERROR, _CRTDBG_MODE_FILE);
       _CrtSetReportFile(_CRT_ERROR, _CRTDBG_FILE_STDERR);
    
       _RPT0(_CRT_ERROR,"1st message\n");
    
  • _CRTDBG_FILE_STDOUT
    Записывает сообщение в stdout, который можно перенаправить.

  • _CRTDBG_REPORT_FILE
    Возвращает текущий режим отчета.

Файлы отчетов, используемые каждым типом отчетов, можно управлять отдельно. Например, можно указать, что reportType _CRT_ERROR должен отправлять уведомления stderr, а reportType _CRT_ASSERT — определяемому пользователем дескриптору файла или потоку.

Требования

Подпрограмма

Обязательный заголовок

Необязательный заголовок

_CrtSetReportFile

<crtdbg.h>

<errno.h>

Консоль не поддерживается в приложениях Магазин Windows. Стандартные дескрипторы потока, связанные с консолью — stdin, stdout и stderr — необходимо перенаправить, чтобы функции C времени выполнения могли использовать их в приложениях Магазин Windows. Дополнительные сведения о совместимости см. в разделе Совместимость.

Версии Библиотеки: Отладочные версии только для Функции библиотеки CRT.

Эквивалент в .NET Framework

Неприменимо. Для вызова стандартной функции C используйте PInvoke. Для получения дополнительной информации см. Примеры вызовов неуправляемого кода.

См. также

Ссылки

Процедуры отладки