Share via


Services de diagnostic

La bibliothèque MFC fournit de nombreux services de diagnostic qui facilitent le débogage de vos programmes.Ces services de diagnostic incluent les macros et les fonctions globales qui vous permettent de tracer les allocations de mémoire de votre programme, fait un dump du contenu d'objets au moment de l'exécution, et imprime les messages de débogage au moment de l'exécution.Les macros et les fonctions globales pour les services de diagnostic sont regroupées dans les catégories suivantes :

  • Macros de diagnostic générales

  • Fonctions et variables générales de diagnostic

  • Fonctions de diagnostic d'objet

Ces macros et fonctions sont disponibles pour toutes les classes dérivées d' CObject dans les versions debug et Release MFC.Toutefois, tous sauf si DEBUG_NEW et VÉRIFIER ne faites rien dans la version Release.

Dans la bibliothèque de débogage, tous les blocs de mémoire alloués sont encadrés avec une série de « octets de protection. » Si ces octets sont troublés par une écriture itinérant de mémoire, les programmes de diagnostic peuvent signaler un problème.Si vous incluez la ligne :

#define new DEBUG_NEW

dans votre fichier d'implémentation, tous les appels à new non réussies enregistrent le nom de fichier et le numéro de ligne où l'allocation de mémoire a eu lieu.La fonction CMemoryState::DumpAllObjectsSince affiche cette information supplémentaire, qui vous permet d'identifier des fuites de mémoire.Consultez également à la classe CDumpContext pour plus d'informations sur la sortie de diagnostic.

De plus, la bibliothèque Runtime C prend également en charge un ensemble de fonctions de diagnostic que vous pouvez utiliser pour déboguer vos applications.Pour plus d'informations, consultez routines de débogage dans la référence de la bibliothèque Runtime.

Macros de diagnostic générales MFC

ASSERT

Imprime un message puis interrompt le programme si l'expression spécifiée prend la FALSE dans la version debug de la bibliothèque.

ASSERT_KINDOF

Tests qu'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 sa fonction membre d' AssertValid ; en général substitué d' CObject.

DEBUG_NEW

Indiquez un nom de fichier et un numéro de ligne pour toutes les allocations d'objets en mode débogage pour vous aider à rechercher les fuites de mémoire.

DEBUG_ONLY

Semblable à ASSERT mais ne teste pas la valeur de l'expression ; utile pour le code qui doit s'exécuter uniquement en mode débogage.

TRACE

Fournit printffonction comme dans la version debug de la bibliothèque.

VÉRIFIEZ

Semblable à ASSERT mais évalue l'expression dans la version Release de la bibliothèque ainsi que dans la version debug.

Variables et fonctions de diagnostic générales MFC

afxDump

Variable globale qui envoie les informations de CDumpContext dans la fenêtre Sortie du débogueur ou au terminal de débogage.

afxMemDF

Variable globale qui contrôle le comportement de l'allocateur de mémoire de débogage.

AfxCheckError

La variable globale utilisée pour tester SCODE passé pour voir s'il s'agit d'une erreur et, le cas échéant, lève l'erreur appropriée.

AfxCheckMemory

Active l'état de la mémoire tout actuellement allouée.

AfxDump

Si appelé pendant que dans le débogueur, dumps l'état d'un objet pendant le débogage.

AfxDumpStack

Générez une image de la pile actuelle.Cette fonction est toujours liée statiquement.

AfxEnableMemoryLeakDump

Active le dump des fuites de mémoire.

AfxEnableMemoryTracking

Active ou désactive la mémoire suivant et désactivation.

AfxIsMemoryBlock

Vérifie qu'un bloc de mémoire a été correctement allouée.

AfxIsValidAddress

Vérifie qu'une plage d'adresses mémoire se trouve dans les limites du programme.

AfxIsValidString

Détermine si un pointeur vers une chaîne est valide.

AfxSetAllocHook

Active l'appel d'une fonction sur chaque allocation de mémoire.

Fonctions de diagnostic des objets MFC

AfxDoForAllClasses

Remplit une fonction spécifiée sur tous les CObject- les classes dérivées qui prennent en charge le contrôle de type d'exécution.

AfxDoForAllObjects

Remplit une fonction spécifiée sur tous les CObject- les objets dérivés qui ont été alloués avec new.

Voir aussi

Concepts

Macro MFC et Globals