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
Para utilizar 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, vea Técnicas de depuración de CRT.
Versiones de depuración de las rutinas de la biblioteca en tiempo de ejecución de C
Rutina |
Utilice |
Equivalente de .NET Framework |
---|---|---|
Evalúa una expresión y genera un informe de depuración cuando el resultado es FALSE |
||
Parecida a _ASSERT, pero incluye la expresión del error en el informe generado |
||
Confirma la integridad de los bloques de memoria asignados en el montón de depuración |
||
Establece un punto de interrupción |
No es aplicable Para llamar a la función estándar de C, use PInvoke. Para obtener más información, vea Ejemplos de invocación de plataforma. |
|
Genera un informe de depuración con un mensaje de usuario y envía el informe a tres destinos posibles |
System::Diagnostics::Debug::Write, System::Diagnostics::Debug::Writeline, System::Diagnostics::Debug::WriteIf, System::Diagnostics::Debug::WriteLineIf |
|
Llama a una función suministrada por la aplicación para todos los tipos de _CLIENT_BLOCK del montón |
No es aplicable Para llamar a la función estándar de C, use PInvoke. Para obtener más información, vea Ejemplos de invocación de plataforma. |
|
Vuelca todos los bloques de memoria del montón de depuración cuando se ha producido una pérdida de memoria significativa |
No es aplicable Para llamar a la función estándar de C, use PInvoke. Para obtener más información, vea Ejemplos de invocación de plataforma. |
|
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 |
No es aplicable Para llamar a la función estándar de C, use PInvoke. Para obtener más información, vea Ejemplos de invocación de plataforma. |
|
Comprueba que un puntero especificado está en el montón local |
No es aplicable Para llamar a la función estándar de C, use PInvoke. Para obtener más información, vea Ejemplos de invocación de plataforma. |
|
Comprueba que un intervalo de memoria especificado es válido para lectura y escritura |
No es aplicable Para llamar a la función estándar de C, use PInvoke. Para obtener más información, vea Ejemplos de invocación de plataforma. |
|
Obtiene el estado actual del montón de depuración y lo almacena en una estructura de _CrtMemState proporcionada por la aplicación |
No es aplicable Para llamar a la función estándar de C, use PInvoke. Para obtener más información, vea Ejemplos de invocación de plataforma. |
|
Compara si dos estados de memoria tienen diferencias significativas y devuelve los resultados |
No es aplicable Para llamar a la función estándar de C, use PInvoke. Para obtener más información, vea Ejemplos de invocación de plataforma. |
|
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 |
No es aplicable Para llamar a la función estándar de C, use PInvoke. Para obtener más información, vea Ejemplos de invocación de plataforma. |
|
Vuelca la información de encabezado de depuración para un estado de memoria especificado con un formato legible para el usuario |
||
Devuelve el tipo o subtipo de bloque asociado a un puntero de bloque especificado del montón de depuración. |
No es aplicable Para llamar a la función estándar de C, use PInvoke. Para obtener más información, vea Ejemplos de invocación de plataforma. |
|
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 |
No es aplicable Para llamar a la función estándar de C, use PInvoke. Para obtener más información, vea Ejemplos de invocación de plataforma. |
|
Establece un punto de interrupción en un número de orden especificado de la asignación de objetos |
No es aplicable Para llamar a la función estándar de C, use PInvoke. Para obtener más información, vea Ejemplos de invocación de plataforma. |
|
Recupera o modifica el estado de la marca _crtDbgFlag para controlar el comportamiento de asignación del administrador del montón de depuración |
No es aplicable Para llamar a la función estándar de C, use PInvoke. Para obtener más información, vea Ejemplos de invocación de plataforma. |
|
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 |
No es aplicable Para llamar a la función estándar de C, use PInvoke. Para obtener más información, vea Ejemplos de invocación de plataforma. |
|
Identifica el archivo o flujo que se va a usar como destino de un tipo de informe concreto _CrtDbgReport |
No es aplicable Para llamar a la función estándar de C, use PInvoke. Para obtener más información, vea Ejemplos de invocación de plataforma. |
|
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 |
No es aplicable Para llamar a la función estándar de C, use PInvoke. Para obtener más información, vea Ejemplos de invocación de plataforma. |
|
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 |
No es aplicable Para llamar a la función estándar de C, use PInvoke. Para obtener más información, vea Ejemplos de invocación de plataforma. |
|
Especifica los destinos generales de un tipo específico de informe generado por _CrtDbgReport |
No es aplicable Para llamar a la función estándar de C, use PInvoke. Para obtener más información, vea Ejemplos de invocación de plataforma. |
|
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. |
No es aplicable Para llamar a la función estándar de C, use PInvoke. Para obtener más información, vea Ejemplos de invocación de plataforma. |
|
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 |
No es aplicable Para llamar a la función estándar de C, use PInvoke. Para obtener más información, vea Ejemplos de invocación de plataforma. |
|
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 |
No es aplicable Para llamar a la función estándar de C, use PInvoke. Para obtener más información, vea Ejemplos de invocación de plataforma. |
|
Cambia el tamaño de un bloque de memoria especificado del montón, expandiendo o contrayendo el bloque |
No es aplicable Para llamar a la función estándar de C, use PInvoke. Para obtener más información, vea Ejemplos de invocación de plataforma. |
|
Libera un bloque de memoria del montón |
No es aplicable Para llamar a la función estándar de C, use PInvoke. Para obtener más información, vea Ejemplos de invocación de plataforma. |
|
Crea un nombre de ruta de acceso absoluta o completa para el nombre de ruta de acceso relativa especificado, utilizando _malloc_dbg para asignar memoria |
||
Obtiene el directorio de trabajo actual, usando _malloc_dbg para asignar memoria |
No es aplicable Para llamar a la función estándar de C, use PInvoke. Para obtener más información, vea Ejemplos de invocación de plataforma. |
|
Asigna un bloque de memoria del montón con espacio adicional para un encabezado de depuración y búferes de sobrescritura |
No es aplicable Para llamar a la función estándar de C, use PInvoke. Para obtener más información, vea Ejemplos de invocación de plataforma. |
|
Calcula el tamaño de un bloque de memoria del montón |
No es aplicable Para llamar a la función estándar de C, use PInvoke. Para obtener más información, vea Ejemplos de invocación de plataforma. |
|
Reasigna un bloque de memoria especificado en el montón, para lo que lo mueve o lo cambia de tamaño |
No es aplicable Para llamar a la función estándar de C, use PInvoke. Para obtener más información, vea Ejemplos de invocación de plataforma. |
|
Duplica una cadena, usando _malloc_dbg para asignar memoria |
||
Genera nombres que se pueden usar para crear archivos temporales, usando _malloc_dbg para asignar memoria |
No es aplicable Para llamar a la función estándar de C, use PInvoke. Para obtener más información, vea Ejemplos de invocación de plataforma. |
Las rutinas de depuración se pueden usar para recorrer el código fuente de la mayoría de las demás rutinas en tiempo de ejecución de C durante el proceso de depuración. Sin embargo, Microsoft considera que alguna tecnología es de su propiedad y, por consiguiente, no proporciona el código fuente 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.
Rutinas en tiempo de ejecución de C no disponibles en formato de código fuente
* Aunque hay código fuente disponible para la mayor parte de esta rutina, realiza una llamada interna a otra rutina para la que no se proporciona código.
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.
Rutinas que se comportan de manera diferente en una compilación de depuración de una aplicación
Rutina abort de C |
Operador delete de C++ |
Rutina assert de C |
Operador new de C++ |