Partilhar via


_CrtSetReportFile

Depois de usar _CrtSetReportMode para especificar _CRTDBG_MODE_FILE, você pode especificar o identificador de arquivo para receber o texto da mensagem. _CrtSetReportFile também é usado por _CrtDbgReport, _CrtDbgReportW para especificar o destino do texto (somente na versão de depuração).

Sintaxe

_HFILE _CrtSetReportFile(
   int reportType,
   _HFILE reportFile
);

Parâmetros

reportType
Tipo de relatório: _CRT_WARN, _CRT_ERROR e _CRT_ASSERT.

reportFile
Novo arquivo de relatório para reportType.

Valor retornado

Após a conclusão bem-sucedida, _CrtSetReportFile retorna o arquivo de relatório anterior definido para o tipo de relatório especificado em reportType. Se um valor inválido for passado para reportType, essa função invocará o manipulador de parâmetro inválido, conforme descrito em Validação de parâmetro. Se for permitido continuar a execução, errno será definido como EINVAL e a função retornará _CRTDBG_HFILE_ERROR. Para obter mais informações, consulte errno, _doserrno, _sys_errlist e _sys_nerr.

Comentários

_CrtSetReportFile é usado com a função _CrtSetReportMode para definir o destino ou destinos de um tipo de relatório específico gerado por _CrtDbgReport. Quando você chamar _CrtSetReportMode para atribuir o modo de relatório _CRTDBG_MODE_FILE a um tipo de relatório específico, chame também _CrtSetReportFile para especificar o arquivo ou fluxo de destino. Quando _DEBUG não está definido, as chamadas para _CrtSetReportFile são removidas durante o pré-processamento.

A lista a seguir mostra as opções disponíveis para reportFile e o comportamento resultante de _CrtDbgReport. Essas opções são definidas como sinalizadores de bits em Crtdbg.h.

  • file handle

    Um identificador para o arquivo que será o destino das mensagens. Nenhuma tentativa é feita para verificar a validade do identificador. É necessário abrir e fechar o identificador do arquivo. Por exemplo:

    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

    Grava a mensagem em stderr, que pode ser redirecionada da seguinte maneira:

    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

    Grava a mensagem em stdout, que pode ser redirecionada.

  • _CRTDBG_REPORT_FILE

    Retorna o modo de relatório atual.

É possível controlar o arquivo de relatório usado por cada tipo de relatório separadamente. Por exemplo, é possível especificar que um reportType de _CRT_ERROR relate por meio de stderr, enquanto um reportType de _CRT_ASSERT relate por meio de um identificador de arquivo ou fluxo definido pelo usuário.

Requisitos

Rotina Cabeçalho necessário Cabeçalho opcional
_CrtSetReportFile <crtdbg.h> <errno.h>

Não há suporte para o console em aplicativos UWP (Plataforma Universal do Windows). Os identificadores de fluxo padrão associados ao console, stdin, stdout e stderr, devem ser redirecionados antes que as funções em tempo de execução C possam usá-los em aplicativos UWP. Para obter informações sobre compatibilidade, consulte Compatibilidade.

Bibliotecas: Apenas versões de depuração dos recursos da biblioteca CRT.

Confira também

Rotinas de depuração