La bibliothèque Microsoft Foundation Class fournit de nombreux services de diagnostic qui rendent vos programmes plus faciles de débogage. Ces services de diagnostic comprennent des macros et fonctions globales qui vous permettent de suivre la mémoire de de votre programme affectations, vider le contenu des objets au moment de l'exécution et imprimer des messages de débogage pendant l'exécution. Les macros et fonctions globales pour les services de diagnostic sont regroupées dans les catégories suivantes:
Ces macros et fonctions sont disponibles pour toutes les classes dérivées de CObject dans les versions Debug et Release de MFC. Cependant, tous sauf DEBUG_NEW et vérifier ne rien dans la version.
Dans la bibliothèque de débogage, tous les blocs de mémoire alloués sont entre crochets avec une série de « garde octets. » Si ces octets sont perturbés par une écriture mémoire errant, les routines de diagnostics peuvent signaler un problème. Si vous incluez la ligne
# define DEBUG_NEW nouveau
dans votre fichier de mise en œuvre, tous les appels à nouveau vont stocker le nombre de nom de fichier et de ligne où l'allocation de mémoire a eu lieu. La fonction CMemoryState::DumpAllObjectsSince affiche cette information supplémentaire, vous permettant d'identifier les fuites de mémoire. Se référer aussi à la classe CDumpContext pour plus d'informations sur la production de diagnostique.
En outre, la bibliothèque Runtime C soutient également un ensemble de fonctions de diagnostic que vous pouvez utiliser pour déboguer vos applications. Pour plus d'informations, voir Les Routines de débogage dans la Référence de la bibliothèque Run-Time.
Macros de Diagnostic général MFC
| FAIRE VALOIR | Imprime un message et puis abandonne le programme si l'expression spécifiée la valeur false dans la version Debug de la bibliothèque. |
| ASSERT_KINDOF | Tests d'un objet est un objet de la classe spécifiée ou d'une classe dérivée de la classe spécifiée. |
| ASSERT_VALID | Teste la validité interne d'un objet en appelant la fonction membre AssertValid ; généralement substituée de CObject. |
| DEBUG_NEW | Fournit un numéro de nom de fichier et de ligne pour toutes les allocations de l'objet en mode débogage pour aider à trouver les fuites de mémoire. |
| TRACE | Offre printf-comme des capacités dans la version Debug de la bibliothèque. |
| TRACE0 | Semblable à la TRACE , mais prend un format de chaîne sans arguments. |
| TRACE1 | Semblable à la TRACE , mais prend un format de chaîne avec un seul argument. |
| TRACE2 | Semblable à la TRACE , mais prend un format de chaîne avec deux arguments. |
| TRACE3 | Semblable à la TRACE , mais prend un format de chaîne avec trois arguments. |
| VÉRIFIER | Similar to ASSERT mais évalue l'expression dans la version de la bibliothèque ainsi que dans la version Debug. |
Fonctions et Variables de Diagnostic général MFC
| afxDump | Variable globale qui envoie des informations CDumpContext pour la fenêtre sortie du débogueur ou le terminal de débogage. |
| afxMemDF | Variable globale qui contrôle le comportement de l'allocateur de mémoire de débogage. |
| afxTraceEnabled | Variable globale utilisée pour activer ou désactiver la sortie de la macro TRACE. |
| afxTraceFlags | Variable globale utilisée pour activer les fonctionnalités de reporting intégrées de MFC. |
| AfxCheckError | Variable globale utilisée pour tester le passé SCODE pour voir si c'est une erreur et, le cas échéant, lève l'erreur appropriée. |
| AfxCheckMemory | Vérifie que l'intégrité de l'ensemble de mémoire actuellement allouée. |
| AfxDump | Si bien que dans le débogueur, exporte l'état d'un objet pendant le débogage. |
| AfxDumpStack | Générer une image de la pile en cours. Cette fonction est toujours liée statiquement. |
| AfxEnableMemoryTracking | Transforme la mémoire suivi et à l'extérieur. |
| AfxIsMemoryBlock | Vérifie qu'un bloc de mémoire a été alloué convenablement. |
| AfxIsValidAddress | Vérifie qu'une plage d'adresses mémoire est dans les limites du programme. |
| AfxIsValidString | Détermine si un pointeur vers une chaîne valide. |
| AfxSetAllocHook | Permet l'appel d'une fonction sur chaque allocation de mémoire. |
Fonctions de Diagnostic objet MFC
| AfxDoForAllClasses | Exécute une fonction spécifiée sur tous les CObject-classes prenant en charge la vérification de run-time type dérivées. |
| AfxDoForAllObjects | Exécute une fonction spécifiée sur tous les CObject-dérivés des objets qui ont été attribués à nouveau. |