Compartilhar via


_CrtDbgReport, _CrtDbgReportW

Gera um relatório com uma mensagem de depuração e envia o relatório para três destinos possíveis (somente versões de depuração).

Sintaxe

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] ...
);

Parâmetros

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

filename
Ponteiro para o nome do arquivo de origem em que a asserção/relatório ocorreu ou que é NULL.

lineNumber
Número da linha no arquivo de origem em que a asserção/relatório ocorreu ou que é NULL.

moduleName
Ponteiro para o nome do módulo (.exe ou .dll) em que a asserção/relatório ocorreu.

format
Ponteiro para a cadeia de caracteres formato-controle usada para criar a mensagem do usuário.

argument
Argumentos de substituição opcionais usados por format.

Valor retornado

Para todos os destinos de _CrtDbgReport relatório e _CrtDbgReportW retorne -1 se ocorrer um erro e 0 se nenhum erro for encontrado. No entanto, quando o destino do relatório é uma janela de mensagem de depuração e o usuário escolhe o botão Repetir , essas funções retornam 1. Se o usuário escolher o botão Anular na janela Mensagem de Depuração, essas funções serão anuladas imediatamente e não retornarão um valor.

As _RPTmacros de depuração , _RPTF chamam _CrtDbgReport para gerar seus relatórios de depuração. As versões de caracteres largos dessas macros, juntamente com _ASSERT, _ASSERTEe , _RPTFW_RPTW usam _CrtDbgReportW para gerar seus relatórios de depuração. Quando _CrtDbgReport ou _CrtDbgReportW retornar 1, essas macros iniciarão o depurador, se a depuração JIT (just-in-time) estiver habilitada.

Comentários

_CrtDbgReport e _CrtDbgReportW pode enviar o relatório de depuração para três destinos diferentes: um arquivo de relatório de depuração, um monitor de depuração (o depurador do Visual Studio) ou uma janela de mensagem de depuração. Duas funções _CrtSetReportMode de configuração e _CrtSetReportFile, são usadas para especificar o destino ou destinos para cada tipo de relatório. Essas funções permitem o controle independente do destino de cada tipo de relatório. Por exemplo, é possível especificar que um reportType of só vai para o monitor de depuração, enquanto um reportType of vai para uma janela de mensagem de _CRT_WARN _CRT_ASSERT depuração e um arquivo de relatório definido pelo usuário.

_CrtDbgReportW é a versão de caracteres largos do _CrtDbgReport. Todos os seus parâmetros de saída e cadeia de caracteres estão em cadeias de caracteres largos; caso contrário, é idêntico à versão de caractere de byte único.

_CrtDbgReport e _CrtDbgReportW crie a mensagem do usuário para o relatório de depuração substituindo os argument[n] format argumentos na cadeia de caracteres, usando as mesmas regras definidas pelas printf funções OR wprintf . Essas funções geram o relatório de depuração e determinam o destino (ou destinos) com base nos modos do relatório atual e no arquivo definido para reportType. Quando o relatório é enviado para uma janela de mensagem de depuração, filename, lineNumber e moduleName são incluídos nas informações exibidas na janela.

O tabela a seguir lista as opções disponíveis para o modo (ou modos), o arquivo do relatório e o comportamento resultante de _CrtDbgReport e _CrtDbgReportW. Essas opções são definidas como sinalizadores de bits em <crtdbg.h>.

Modo do relatório Arquivo do relatório Comportamento _CrtDbgReport, _CrtDbgReportW
_CRTDBG_MODE_DEBUG Não aplicável Grava mensagem usando a API do Windows OutputDebugString .
_CRTDBG_MODE_WNDW Não aplicável Chama a API do Windows MessageBox para criar a caixa de mensagem para exibir a mensagem junto com os botões Anular, Repetir e Ignorar . Se um usuário escolher Abortar_CrtDbgReport ou _CrtDbgReport anular imediatamente. Se um usuário escolher Repetir, ele retornará 1. Se um usuário escolher Ignorar, a execução continuará e _CrtDbgReport _CrtDbgReportW retornará 0. Escolher Ignorar quando existe uma condição de erro geralmente resulta em um comportamento indefinido.
_CRTDBG_MODE_FILE __HFILE Grava a mensagem no usuário fornecido HANDLEpelo usuário, usando a API do Windows WriteFile e não verifica a validade do identificador de arquivo; o aplicativo é responsável por abrir o arquivo de relatório e passar um identificador de arquivo válido.
_CRTDBG_MODE_FILE _CRTDBG_FILE_STDERR Grava a mensagem no stderr.
_CRTDBG_MODE_FILE _CRTDBG_FILE_STDOUT Grava a mensagem no stdout.

O relatório pode ser enviado para um, dois ou três destinos ou nenhum destino. Para obter mais informações sobre como especificar o modo ou modos de relatório e o arquivo de relatório, consulte as _CrtSetReportMode funções e _CrtSetReportFile . Para obter mais informações sobre como usar as macros de depuração e as funções de relatório, consulte Macros para relatórios.

Se o aplicativo precisar de mais flexibilidade do que a fornecida por _CrtDbgReport e _CrtDbgReportW, você poderá escrever sua própria função de relatório e conectá-la ao mecanismo de relatório da biblioteca de tempo de execução C usando a _CrtSetReportHook função.

Requisitos

Rotina Cabeçalho necessário
_CrtDbgReport <crtdbg.h>
_CrtDbgReportW <crtdbg.h>

_CrtDbgReport e _CrtDbgReportW são extensões da Microsoft. Para obter mais informações, consulte Compatibilidade.

Bibliotecas

Somente versões de depuração de bibliotecas de tempo de execução C.

Exemplo

// crt_crtdbgreport.c
#include <crtdbg.h>

int main(int argc, char *argv[]) {
#ifdef _DEBUG
   _CrtDbgReport(_CRT_ASSERT, __FILE__, __LINE__, argv[0], NULL);
#endif
}

Veja crt_dbg2 um exemplo de como alterar a função de relatório.

Confira também

Rotinas de depuração
_CrtSetReportMode
_CrtSetReportFile
printf, _printf_l, wprintf, _wprintf_l
_DEBUG