Compartir a través de


Servicios de diagnóstico

Fuentes de la biblioteca Microsoft Foundation Class muchos servicios de diagnóstico que crean depurar los programas más fácil.Estos servicios de diagnóstico incluyen las macros y funciones globales que permiten supervisar las asignaciones de memoria del programa, vuelca el contenido de objetos en tiempo de ejecución, e imprime mensajes de depuración en tiempo de ejecución.Las macros y funciones globales para los servicios de diagnóstico se agrupan en las categorías siguientes:

  • Macros de diagnóstico generales

  • Funciones y variables generales de diagnóstico

  • Funciones de diagnóstico de objeto

Estas macros y funciones están disponibles para todas las clases derivadas de CObject en las versiones de depuración y lanzamiento de MFC.Sin embargo, todos a menos que DEBUG_NEW y COMPROBAR no hacen nada en la versión de lanzamiento.

En la biblioteca de depuración, todos los bloques de memoria asignados se acorchetan con una serie de “bytes de restricción”. Si estos bytes son perturbados por una escritura errante de memoria, las rutinas de diagnóstico puede indicar un problema.Si incluye la línea:

#define new DEBUG_NEW

en el archivo de implementación, todas las llamadas a new almacenarán el nombre de archivo y el número de línea donde ocurrió la asignación de memoria.La función CMemoryState::DumpAllObjectsSince mostrará esta información adicional, lo que permite identificar las pérdidas de memoria.Vea también a la clase CDumpContext para obtener más información sobre salida de diagnóstico.

Además, la biblioteca en tiempo de ejecución de C también admite un conjunto de funciones de diagnóstico que se puede utilizar para depurar las aplicaciones.Para obtener más información, vea Rutinas de depuración en la referencia de la biblioteca en tiempo de ejecución.

Macros de diagnóstico generales de MFC

ASSERT

Imprime un mensaje y después cancela el programa si la expresión especificada se evalúa como FALSE en la versión de depuración de la biblioteca.

ASSERT_KINDOF

Pruebas que un objeto es un objeto de la clase especificada o de una clase derivada de la clase especificada.

ASSERT_VALID

Comprueba la validez interna de un objeto llamando a la función miembro de AssertValid ; reemplazado normalmente de CObject.

DEBUG_NEW

Proporciona el nombre de archivo y el número de línea para todas las asignaciones de objetos en el modo de depuración para ayudar a detectar pérdidas de memoria.

DEBUG_ONLY

Similar a ASSERT pero no prueba el valor de expresión; útil para el código que si de sólo ejecución en modo de depuración.

TRACE

Proporciona printf- como capacidad en la versión de depuración de la biblioteca.

COMPROBAR

Similar a ASSERT pero evalúa la expresión en la versión de lanzamiento de biblioteca así como en la versión de depuración.

Variables y funciones MFC General Diagnóstico

afxDump

Variable global que envía la información de CDumpContext a la ventana de salida del depurador o el terminal de depuración.

afxMemDF

Variable global que controla el comportamiento del asignador de memoria para depuración.

AfxCheckError

Variable global utilizada para probar SCODE pasado para ver si es un error y, si es así produce el error correspondiente.

AfxCheckMemory

Comprueba la integridad de memoria todo actualmente asignada.

AfxDump

Si se llama mientras en el depurador, volcados el estado de un objeto durante la depuración.

AfxDumpStack

Genere una imagen de la pila actual.Esta función está vinculado siempre estáticamente.

AfxEnableMemoryLeakDump

Habilita el volcado de pérdida de memoria.

AfxEnableMemoryTracking

Gira el seguimiento de la memoria por intervalos.

AfxIsMemoryBlock

Comprueba que un bloque de memoria se haya asignado correctamente.

AfxIsValidAddress

Comprueba que un intervalo de direcciones de memoria esté dentro de los límites del programa.

AfxIsValidString

Determina si un puntero a una cadena es válido.

AfxSetAllocHook

Habilita la llamada a una función en cada asignación de memoria.

Funciones de diagnóstico de objetos de MFC

AfxDoForAllClasses

Realiza una función especificada en todo el CObject- las clases derivadas que la comprobación de tipos admiten el tiempo de ejecución.

AfxDoForAllObjects

Realiza una función especificada en todo el CObject- objetos derivados asignados con new.

Vea también

Conceptos

Macros y funciones globales de MFC