La biblioteca Microsoft Foundation Class proporciona muchos servicios de diagnóstico que depurar sus programas más fácil. Estos servicios de diagnóstico incluyen macros y funciones globales que permiten realizar el seguimiento de la memoria del programa asignaciones, volcar el contenido de los objetos en tiempo de ejecución e imprimir mensajes de depuración en tiempo de ejecución. Las macros y funciones globales de servicios de diagnóstico se agrupan en las siguientes categorías:
Estas macros y funciones están disponibles para todas las clases derivadas de CObject en las versiones Debug y Release de MFC. Sin embargo, todos excepto DEBUG_NEW y verificar hacer nada en la versión de lanzamiento.
En la biblioteca de depuración, todos los bloques de memoria asignados están entre corchetes con una serie de "Guardia bytes." Si estos bytes están perturbados por una escritura de memoria errante, las rutinas de diagnósticos pueden informar de un problema. Si se incluye la línea
# define DEBUG_NEW nuevo
en el archivo de la aplicación, todas las llamadas a nuevo almacenará el nombre y número de línea donde realizó la asignación de memoria. La función CMemoryState::DumpAllObjectsSince mostrará esta información adicional, lo que le permite identificar pérdidas de memoria. También se refieren a la clase CDumpContext para obtener información adicional sobre salida de diagnóstico.
Además, la biblioteca de tiempo de ejecución c también admite un conjunto de funciones de diagnóstico que puede utilizar para depurar las aplicaciones. Para obtener más información, consulte Rutinas de depuración en la Referencia de la biblioteca de tiempo de ejecución.
Macros de diagnóstico General de MFC
| VALER | Imprime un mensaje y, a continuación, se cancela el programa si la expresión especificada se evalúa como false en la versión de la biblioteca de depuración. |
| ASSERT_KINDOF | Pruebas de que un objeto es un objeto de la clase especificada o de una clase derivada de la clase especificada. |
| ASSERT_VALID | Prueba la validez interna de un objeto llamando a su función de miembros AssertValid ; normalmente se reemplaza de CObject. |
| DEBUG_NEW | Proporciona un nombre de archivo y número de línea para todas las asignaciones de objeto en modo de depuración para ayudar a encontrar pérdidas de memoria. |
| TRAZA | Proporciona printf-como capacidad en la versión de la biblioteca de depuración. |
| TRACE0 | Similar a la traza pero toma un formato de cadena sin argumentos. |
| TRACE1 | Similar a la traza pero toma un formato de cadena con un único argumento. |
| TRACE2 | Similar a la traza pero toma un formato de cadena con dos argumentos. |
| TRACE3 | Similar a la traza pero toma un formato de cadena con tres argumentos. |
| COMPROBAR | Similar a ASSERT pero evalúa la expresión en la versión de la biblioteca, así como en la versión de depuración. |
MFC General diagnóstico Variables y funciones
| afxDump | Variable global que envía información de CDumpContext a la ventana de resultados del depurador o a la terminal de depuración. |
| afxMemDF | Variable global que controla el comportamiento del depuración asignador de memoria. |
| afxTraceEnabled | Variable global que se utiliza para habilitar o deshabilitar la salida de la macro TRACE. |
| afxTraceFlags | Variable global utilizado para activar las funciones de reporting integradas de MFC. |
| AfxCheckError | Variable global utilizado para probar el pasado SCODE para ver si es un error y, si es así, arroja el error adecuado. |
| AfxCheckMemory | Comprueba que la integridad de todo memoria asignada actualmente. |
| AfxDump | Si se llama en el depurador, vuelca el estado de un objeto mientras se depura. |
| AfxDumpStack | Generar una imagen de la pila actual. Esta función siempre está vinculada estáticamente. |
| AfxEnableMemoryTracking | Activa la memoria de seguimiento dentro y fuera de. |
| AfxIsMemoryBlock | Comprueba que se ha asignado correctamente un bloque de memoria. |
| AfxIsValidAddress | Verifica que un intervalo de direcciones de memoria es dentro de los límites del programa. |
| AfxIsValidString | Determina si un puntero a una cadena es válido. |
| AfxSetAllocHook | Permite la llamada de la función en cada asignación de memoria. |
Funciones de diagnóstico de objeto MFC
| AfxDoForAllClasses | Realiza una función especificada en todas CObject-derivadas de clases que admiten la verificación de tipos en tiempo de ejecución. |
| AfxDoForAllObjects | Realiza una función especificada en todas CObject-objetos que se asignaron con nuevos derivados. |