_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
.
Retornar valor
Para todos os destinos _CrtDbgReport
de relatório e retorne -1 se ocorrer um erro e _CrtDbgReportW
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 Depurar Mensagem, essas funções serão imediatamente anuladas e não retornarão um valor.
As _RPT
macros de depuração do , _RPTF
chamam _CrtDbgReport
para gerar seus relatórios de depuração. As versões de caracteres largos dessas macros, juntamente com , e _RPTFW
,_ASSERTE
_RPTW
são usadas _CrtDbgReportW
para gerar seus relatórios de depuração._ASSERT
Quando _CrtDbgReport
ou _CrtDbgReportW
retornar 1, essas macros iniciarão o depurador, se a depuração just-in-time (JIT) 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 de só vai para o monitor de depuração, enquanto um de vai para uma janela de mensagem de depuração e um reportType
reportType
arquivo de _CRT_WARN
_CRT_ASSERT
relatório definido pelo usuário.
_CrtDbgReportW
é a versão de caracteres largos do _CrtDbgReport
. Todos os seus parâmetros de saída e string 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]
argumentos na format
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 abortar 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 comportamento indefinido. |
_CRTDBG_MODE_FILE |
__HFILE |
Grava mensagem para HANDLE o 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 seu aplicativo precisar de mais flexibilidade do que a fornecida por _CrtDbgReport
e , você poderá escrever sua própria função de relatório e _CrtDbgReportW
conectá-la ao mecanismo de relatório de 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
}
Consulte crt_dbg2
para obter 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
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de