_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 _RPT
macros 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
_RPTW
y _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 HANDLE por 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