Share via


_CrtDbgReport, _CrtDbgReportW

Genera un informe con un mensaje de depuración y lo envía a tres destinos posibles (solo versión de depuración).

Sintaxis

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 informe: _CRT_WARN, _CRT_ERROR y _CRT_ASSERT.

filename
Puntero al nombre del archivo de código fuente donde se produjo la aserción o el informe, o NULL.

lineNumber
Número de la línea del archivo de código fuente donde se produjo la aserción o el informe, o NULL.

moduleName
Puntero al nombre del módulo (.exe o .dll) donde se produjo la aserción o el informe.

format
Puntero a la cadena de control de formato utilizada para crear el mensaje de usuario.

argument
Argumentos de sustitución opcionales utilizados por format.

Valor devuelto

Para todos los destinos _CrtDbgReport de informe y _CrtDbgReportW devuelve -1 si se produce un error y 0 si no se encuentra ningún error. Sin embargo, cuando el destino del informe es una ventana de mensajes de depuración y el usuario elige el botón Reintentar , estas funciones devuelven 1. Si el usuario elige el botón Anular en la ventana Mensaje de depuración, estas funciones anulan inmediatamente y no devuelven un valor.

Las _RPTmacros de _RPTF depuración llaman _CrtDbgReport a para generar sus informes de depuración. Las versiones de caracteres anchos de estas macros, junto con _ASSERT, _ASSERTE_RPTWy _RPTFW, usan _CrtDbgReportW para generar sus informes de depuración. Cuando _CrtDbgReport o _CrtDbgReportW devuelve 1, estas macros inician el depurador, si la depuración Just-In-Time (JIT) está habilitada.

Comentarios

_CrtDbgReport y _CrtDbgReportW pueden enviar el informe de depuración a tres destinos diferentes: un archivo de informe de depuración, un monitor de depuración (el depurador de Visual Studio) o una ventana de mensajes de depuración. Se usan dos funciones de configuración, _CrtSetReportMode y _CrtSetReportFile, para especificar el destino o los destinos de cada tipo de informe. Estas funciones permiten controlar por separado los destinos de los informes de cada tipo de informe. Por ejemplo, es posible especificar que un reportType de _CRT_WARN solo va al monitor de depuración, mientras que un reportType de _CRT_ASSERT va a una ventana de mensaje de depuración y a un archivo de informe definido por el usuario.

_CrtDbgReportW es la versión con caracteres anchos de _CrtDbgReport. Todos sus parámetros de salida y cadena están en cadenas de caracteres anchos; de lo contrario, es idéntico a la versión de caracteres de un solo byte.

_CrtDbgReport y _CrtDbgReportW crean el mensaje de usuario para el informe de depuración sustituyendo los argument[n] argumentos en la format cadena mediante las mismas reglas definidas por las printf funciones o wprintf . A continuación, estas funciones generan el informe de depuración y determinan los destinos en función de los modos de informe actuales y el archivo definidos para reportType. Cuando el informe se envía a una ventana de mensajes de depuración, los parámetros filename, lineNumber y moduleName se incluyen en la información que se muestra en la ventana.

En la tabla siguiente se enumeran las opciones de los modos y el archivo de informe, y el comportamiento que producen _CrtDbgReport y _CrtDbgReportW. Estas opciones se definen como marcas de bits en <crtdbg.h>.

Modo de informe Archivo de informe Comportamiento de _CrtDbgReport y _CrtDbgReportW
_CRTDBG_MODE_DEBUG No aplicable Escribe el mensaje mediante la API de Windows OutputDebugString .
_CRTDBG_MODE_WNDW No aplicable Llama a la API de Windows MessageBox para crear un cuadro de mensaje para mostrar el mensaje junto con los botones Anular, Reintentar e Omitir . Si un usuario elige Anular_CrtDbgReport o _CrtDbgReport anula inmediatamente. Si un usuario elige Reintentar, devuelve 1. Si un usuario elige Omitir, la ejecución continúa y _CrtDbgReport devuelve _CrtDbgReportW 0. Al elegir Omitir cuando existe una condición de error, a menudo se produce un comportamiento indefinido.
_CRTDBG_MODE_FILE __HFILE Escribe el mensaje en proporcionado HANDLEpor el usuario, con la API de Windows WriteFile y no comprueba la validez del identificador de archivo; la aplicación es responsable de abrir el archivo de informe y pasar un identificador de archivo válido.
_CRTDBG_MODE_FILE _CRTDBG_FILE_STDERR Escribe el mensaje en stderr.
_CRTDBG_MODE_FILE _CRTDBG_FILE_STDOUT Escribe el mensaje en stdout.

El informe se puede enviar a uno, dos o tres destinos, o a ninguno. Para obtener más información sobre cómo especificar el modo de informe o los modos y el archivo de informe, consulte las _CrtSetReportMode funciones y _CrtSetReportFile . Para obtener más información sobre el uso de las macros de depuración y las funciones de informes, consulte Macros para informes.

Si la aplicación necesita más flexibilidad que la proporcionada por _CrtDbgReport y _CrtDbgReportW, puede escribir su propia función de informes y enlazarla al mecanismo de informes de la biblioteca en tiempo de ejecución de C mediante la _CrtSetReportHook función .

Requisitos

Routine Encabezado necesario
_CrtDbgReport <crtdbg.h>
_CrtDbgReportW <crtdbg.h>

_CrtDbgReport y _CrtDbgReportW son extensiones de Microsoft. Para obtener más información, consulte Compatibilidad.

Bibliotecas

Solo versiones de depuración de las bibliotecas en tiempo de ejecución de C.

Ejemplo

// 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 obtener un ejemplo de cómo cambiar la función de informe.

Consulte también

Rutinas de depuración
_CrtSetReportMode
_CrtSetReportFile
printf, _printf_l, wprintf, _wprintf_l
_DEBUG