_CrtDbgReport, _CrtDbgReportW

 

Para obtener la documentación más reciente de Visual Studio 2017 RC, consulte Documentación de Visual Studio 2017 RC.

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

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.

Para todos los destinos de informe, _CrtDbgReport y _CrtDbgReportW devuelven –1 si se produce un error, y 0 si no se producen errores. Sin embargo, cuando el destino del informe es una ventana de mensaje de depuración y el usuario hace clic en el Reintentar botón, estas funciones devuelven 1. Si el usuario hace clic en el Anular botón en la ventana de mensajes de depuración, estas funciones inmediatamente anular y no devuelven un valor.

El _RPT, _RPTF Depurar macros llamada _CrtDbgReport para su depuración de generar informes. Las versiones de caracteres anchos de estas macros, así como _ASSERT [ E ], _RPTW``n y _RPTFW``n, utilice _CrtDbgReportW para su depuración de generar informes. Si _CrtDbgReport o _CrtDbgReportW devuelven 1, estas macros inician el depurador, siempre que esté habilitada la depuración Just-in-time (JIT).

_CrtDbgReport y _CrtDbgReportW pueden enviar el informe de depuración a tres destinos distintos: un archivo de informe de depuración, un monitor de depuración (el depurador Visual Studio) o una ventana de mensajes de depuración. Dos funciones de configuración, _CrtSetReportMode y _CrtSetReportFile, se usan para especificar el destino o destinos de cada tipo de informe. Estas funciones permiten controlar por separado los destinos de los informes de cada tipo de informe. Por ejemplo, se puede especificar que un parámetro reportType de _CRT_WARN se envíe solo al monitor de depuración, y que el parámetro reportType de _CRT_ASSERT se envíe a una ventana de mensajes 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 de cadena son cadenas de caracteres anchos; por lo demás, es idéntica 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 argumentos de argument[n] de la cadena format, con las mismas reglas definidas por las funciones printf 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 informeArchivo de informeComportamiento de _CrtDbgReport y _CrtDbgReportW
_CRTDBG_MODE_DEBUGNo es aplicableEscribe un mensaje mediante Windows OutputDebugString API.
_CRTDBG_MODE_WNDWNo es aplicableLlama a Windows MessageBox API para crear el cuadro de mensaje para mostrar el mensaje junto con Anular, Reintentar, y omitir botones. Si un usuario hace clic Anular, _CrtDbgReport o _CrtDbgReport anula inmediatamente. Si un usuario hace clic Reintentar, devuelve 1. Si un usuario hace clic omitir, la ejecución continúa y _CrtDbgReport y _CrtDbgReportW devuelven 0. Tenga en cuenta que al hacer clic omitir cuando una condición de error existe suele producir un comportamiento indefinido"."
_CRTDBG_MODE_FILE__HFILEEscribe el mensaje proporcionado por el usuario HANDLE, mediante las ventanas WriteFile API y no se 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_STDERREscribe el mensaje en stderr.
_CRTDBG_MODE_FILE_CRTDBG_FILE_STDOUTEscribe el mensaje en stdout.

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

Si la aplicación necesita más flexibilidad que la proporcionada por _CrtDbgReport y _CrtDbgReportW, puede escribir su propios informes de función y enlazarlo a la biblioteca de tiempo de ejecución de C mecanismo de informes utilizando la _CrtSetReportHook (función).

RutinaEncabezado necesario
_CrtDbgReport<crtdbg.h>
_CrtDbgReportW<crtdbg.h>

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

Versiones de depuración de bibliotecas en tiempo de ejecución de C solo.

// 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 informes.

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

Mostrar: