Rutinas de depuración

La versión de depuración de la biblioteca en tiempo de ejecución de C ofrece muchos servicios de diagnóstico que facilitan la depuración de programas y permiten a los desarrolladores:

  • Usar directamente funciones en tiempo de ejecución durante la depuración

  • Resolver aserciones, errores y excepciones

  • Realizar el seguimiento de las asignaciones del montón y evitar pérdidas de memoria

  • Proporcionar mensajes de depuración al usuario

Versiones de depuración de las rutinas de la biblioteca en tiempo de ejecución de C

Para usar estas rutinas es necesario definir la marca _DEBUG. Todas estas rutinas no hacen nada en una compilación comercial de una aplicación. Para obtener más información sobre cómo usar las nuevas rutinas de depuración, consulte Técnicas de depuración de CRT.

Rutina Uso
_ASSERT Evalúa una expresión y genera un informe de depuración cuando el resultado es FALSE
_ASSERTE Parecida a _ASSERT, pero incluye la expresión del error en el informe generado
_CrtCheckMemory Confirma la integridad de los bloques de memoria asignados en el montón de depuración
_CrtDbgBreak Establece un punto de interrupción
, _CrtDbgReportW Genera un informe de depuración con un mensaje de usuario y envía el informe a tres destinos posibles
_CrtDoForAllClientObjects Llama a una función suministrada por la aplicación para todos los tipos de _CLIENT_BLOCK del montón
_CrtDumpMemoryLeaks Vuelca todos los bloques de memoria del montón de depuración cuando se ha producido una fuga de memoria significativa
_CrtIsMemoryBlock Comprueba que un bloque de memoria especificado está en el montón local y que tiene un identificador válido de tipo de bloque de montón de depuración
_CrtIsValidHeapPointer Comprueba que un puntero especificado está en el montón local
_CrtIsValidPointer Comprueba que un intervalo de memoria especificado es válido para lectura y escritura
_CrtMemCheckpoint Obtiene el estado actual del montón de depuración y lo almacena en una estructura de _CrtMemState proporcionada por la aplicación
_CrtMemDifference Compara si dos estados de memoria tienen diferencias significativas y devuelve los resultados
_CrtMemDumpAllObjectsSince Vuelca la información sobre objetos del montón desde que se tomó un punto de comprobación especificado o desde que se empezó a ejecutar el programa
_CrtMemDumpStatistics Vuelca la información de encabezado de depuración para un estado de memoria especificado con un formato legible para el usuario
_CrtReportBlockType Devuelve el tipo o subtipo de bloque asociado a un puntero de bloque especificado del montón de depuración.
_CrtSetAllocHook Instala una función de asignación definida por el cliente enlazándola al proceso de asignación de memoria de depuración en tiempo de ejecución de C
_CrtSetBreakAlloc Establece un punto de interrupción en un número de orden especificado de la asignación de objetos
_CrtSetDbgFlag Recupera o modifica el estado de la marca _crtDbgFlag para controlar el comportamiento de asignación del administrador del montón de depuración
_CrtSetDumpClient Instala una función definida por la aplicación a la que se llama cada vez que se llama a una función de volcado de depuración para volcar los bloques de memoria de tipo _CLIENT_BLOCK
_CrtSetReportFile Identifica el archivo o flujo que se va a usar como destino de un tipo de informe concreto _CrtDbgReport
_CrtSetReportHook Instala una función de creación de informes definida por el cliente enlazándola al proceso de creación de informes de depuración en tiempo de ejecución de C
, _CrtSetReportHookW2 Instala o desinstala una función de generación de informes definida por el cliente enlazándola al proceso de creación de informes de depuración en tiempo de ejecución de C
_CrtSetReportMode Especifica los destinos generales de un tipo específico de informe generado por _CrtDbgReport
_RPT[0,1,2,3,4] Realiza el seguimiento del progreso de la aplicación generando un informe de depuración mediante una llamada a _CrtDbgReport con una cadena de formato y un número variable de argumentos. No proporciona información sobre el archivo de código fuente y el número de línea.
_RPTF[0,1,2,3,4] Es parecida a las macros de _RPTn, pero proporciona el nombre del archivo de código fuente y el número de línea donde se originó la solicitud de informe
_calloc_dbg Asigna un número especificado de bloques de memoria del montón con espacio adicional para un encabezado de depuración y búferes de sobrescritura
_expand_dbg Cambia el tamaño de un bloque de memoria especificado del montón, expandiendo o contrayendo el bloque
_free_dbg Libera un bloque de memoria del montón
, _wfullpath_dbg Cree un nombre de ruta de acceso absoluta o completa para el nombre de ruta de acceso relativa especificado, _malloc_dbg utilizando para asignar memoria.
, _wgetcwd_dbg Obtenga el directorio de trabajo actual mediante _malloc_dbg para asignar memoria.
_malloc_dbg Asigna un bloque de memoria del montón con espacio adicional para un encabezado de depuración y búferes de sobrescritura
_msize_dbg Calcula el tamaño de un bloque de memoria del montón
_realloc_dbg Reasigna un bloque de memoria especificado en el montón, para lo que lo mueve o lo cambia de tamaño
, _wcsdup_dbg Duplica una cadena mediante para _malloc_dbg asignar memoria.
, _wtempnam_dbg Genere nombres que puede usar para crear archivos temporales mediante _malloc_dbg para asignar memoria.

Rutinas en tiempo de ejecución de C no disponibles en formato de código fuente

El depurador se puede usar para recorrer el código fuente de la mayoría de rutinas en tiempo de ejecución de C durante el proceso de depuración. No obstante, Microsoft considera que alguna tecnología es de su propiedad y, por consiguiente, no proporciona el código fuente de un subconjunto de estas rutinas. La mayoría de estas rutinas pertenecen a los grupos de control de excepciones o de procesamiento de punto flotante, pero también se incluyen algunas otras. En la siguiente tabla se enumeran estas rutinas.

acos
acosh
asin
asinh
, atan2
atanh
Bessel functions
_cabs
ceil
_chgsign
, _clearfp
, _controlfp

Aunque hay código fuente disponible para la mayor parte de las rutinas printf y scanf, realizan una llamada interna a otra rutina para la que no se proporciona código fuente.

Rutinas que se comportan de manera diferente en una compilación de depuración de una aplicación

Ciertas funciones en tiempo de ejecución de C y algunos operadores de C++ se comportan de manera diferente cuando se les llama desde una versión de depuración de una aplicación. (Observe que una compilación de depuración de una aplicación se puede generar definiendo la marca _DEBUG o vinculándola a una versión de depuración de la biblioteca en tiempo de ejecución de C). Las diferencias de comportamiento suelen tener relación con características adicionales o información proporcionada por la rutina para posibilitar el proceso de depuración. En la siguiente tabla se enumeran estas rutinas.

Rutina de C abort

Rutina de C assert

Operador de delete C++

Operador de new C++

Vea también

Rutinas en tiempo de ejecución Universal C por categoría
Comprobar errores en tiempo de ejecución