Diagnosedienste

Die Microsoft Foundation Class-Bibliothek stellt viele Diagnosedienste, die das Debuggen, die Programme einfacher. Diese Diagnosedienste enthalten Makros und globale Funktionen, die Ihnen ermöglichen, die Speicherbelegungen des Programms zu verfolgen, der Inhalt von Objekten während der Laufzeit gespeichert und Debugmeldungen zur Laufzeit gedruckt. Die Makros und globalen Funktionen für Diagnosedienste werden in die folgenden Kategorien gruppiert:

  • Allgemeine Diagnosemakros

  • Allgemeine Diagnosefunktionen und Variablen

  • Objektdiagnosenfunktionen

Diese Makros und Funktionen sind für alle Klassen verfügbar, die von CObject in der Debug- und Releaseversionen von MFC ableiten. jedoch alle, außer DEBUG_NEW und ÜBERPRÜFEN nichts in der Releaseversion erfolgen.

In der Debugbibliothek aufweist werden alle reservierten Speicherblöcke gekennzeichnet mit einer Reihe Wächterbytes "." Wenn dieser Bytes durch einen fehlerhaften Arbeitsspeicher gestört werden, schreiben, können die Diagnoseprogramme über ein Problem melden. Wenn Sie die Zeile einfügen:

#define new DEBUG_NEW

in der Implementierungsdatei speichern alle Aufrufe von neu den Dateinamen und die Zeilennummer, in der die Speicherbelegung stattgefunden hat. Die Funktion CMemoryState::DumpAllObjectsSince werden diese zusätzlichen Informationen an und ermöglicht Ihnen, um Speicherverluste zu identifizieren. Verweisen Sie auch zur Klasse CDumpContext für weitere Diagnoseausgabe.

Darüber hinaus unterstützt die C-Laufzeitbibliothek auch einen Satz Diagnosefunktionen, die Sie verwenden können, um Anwendungen zu debuggen. Weitere Informationen finden Sie unter Debuggen Sie Routinen in der Laufzeitbibliotheksreferenz.

MFC-allgemeine Diagnosemakros

ASSERT

Druckt eine Meldung und wird anschließend das Programm ab, wenn der angegebene Ausdruck FALSE in der Debugversion der Bibliothek ergibt.

ASSERT_KINDOF

Tests, dass ein Objekt ein Objekt der angegebenen Klasse oder einer Klasse ist, die von der angegebenen Klasse abgeleitet wird.

ASSERT_VALID

Testet die interne Gültigkeit eines Objekts durch Aufrufen seiner AssertValid ; Memberfunktion normalerweise überschrieben von CObject.

DEBUG_NEW

Stellt einen Dateinamen und Zeilennummer eine für alle Objektzuordnungen im Debugmodus, um zu helfen, Speicherverluste zu suchen.

DEBUG_ONLY

Vergleichbar mit ASSERT jedoch getestet nicht den Wert des Ausdrucks; nützlich für Code, der nur im Debugmodus ausführen soll.

ABLAUFVERFOLGUNG

Stellt ähnliche Funktion printf in der Debugversion der Bibliothek bereit.

ÜBERPRÜFEN

Vergleichbar mit ASSERT jedoch wertet den Ausdruck in der Releaseversion der Bibliothek sowie in der Debugversion aus.

MFC-allgemeine Diagnosevariablen und -Funktionen

afxDump

Globale Variablen, die CDumpContext Informationen zum Debuggerausgabefenster oder dem debuggensterminal sendet.

afxMemDF

Globale Variablen, die das Verhalten der Debuggingsspeicherbelegungsfunktion steuert.

AfxCheckError

Globale Variablen verwendet, um übergebene SCODE zu testen, um festzustellen, ob ein Fehler ist und wenn ja, den entsprechenden Fehler auslöst.

AfxCheckMemory

Überprüft die Integrität von allen belegte Speicher nur.

AfxDump

Wenn Sie aufgerufen werden während im Debugger, Dumps der Zustand eines Objekts beim Debuggen.

AfxDumpStack

Generieren Sie ein Bild des aktuellen Stapel. Diese Funktion wird immer statisch verknüpft.

AfxEnableMemoryLeakDump

Ermöglicht den würde.

AfxEnableMemoryTracking

Drehungsarbeitsspeichernachverfolgung an und deaktivieren.

AfxIsMemoryBlock

Überprüft, dass ein Speicherblock ordnungsgemäß zugeordnet wurde.

AfxIsValidAddress

Überprüft, ob ein Speicheradressenbereich innerhalb des Programms.

AfxIsValidString

Bestimmt, ob ein Zeiger auf eine Zeichenfolge gültig ist.

AfxSetAllocHook

Aktiviert das Aufrufen einer Funktion auf jeder Speicherbelegung.

MFC-Objekt-Diagnosen-Funktionen

AfxDoForAllClasses

Entlädt eine angegebene Aufgabe für alle von CObject abgeleiteten Klassen erfüllt, die Ablauftypüberprüfung unterstützen.

AfxDoForAllObjects

Entlädt eine angegebene Aufgabe für alle CObject abgeleitete Objekte aus, die mit neu zugeordnet wurden.

Siehe auch

Konzepte

MFC-Makros, globale Funktionen und globale Variablen