Freigeben über


Diagnosedienste

Das Microsoft Foundation Class-Bibliothek-Zubehör zahlreiche Dienste, die Diagnose vornehmen, die Programme einfacher debuggen.Diese Diagnose Dienste umfassen Makros und globale Funktionen, mit denen Sie die Speicherbelegungen des Programms zu verfolgen, um den Inhalt von Objekten während der Laufzeit speichern und Debugmeldungen während der Laufzeit ausgeben.Die Makros und globale Funktionen für Diagnosen Dienste werden in die folgenden Kategorien gruppiert:

  • Allgemeine Diagnose Makros

  • Allgemeine Diagnose Funktionen und Variablen

  • Funktionen diagnosen Objekt

Diese Makros und Funktionen sind für alle Klassen verfügbar, die von CObject im Debug- und Releaseversionen von den in MFC abgeleitet sind.Es sei denn, alle DEBUG_NEW und VERIFY nichts in der Releaseversion erfolgen.

Debuggen in der Bibliothek sind alle belegten Speicherblöcke in Klammern mit einer Reihe von Bytes Wächter "." Wenn diese Bytes durch einen fehlerhaften Arbeitsspeicher gestört werden, schreiben Sie können die Diagnoseprogramme ein Problem melden.Wenn Sie die Zeile einfügen:

#define new DEBUG_NEW

Speichern in der Implementierungsdatei alle Aufrufe von new den Dateinamen und die Zeilennummer, in der die Speicherbelegung stattgefunden hat.Die Funktion CMemoryState::DumpAllObjectsSince werden diese zusätzlichen Informationen an und ermöglicht die Speicherverluste zu ermitteln.Verweisen Sie auch auf die Klasse CDumpContext für weitere Informationen zur Diagnose die Ausgabe.

Darüber hinaus unterstützt die C-Laufzeitbibliothek auch einen Satz von Diagnoseinformationen Funktionen, die Sie verwenden können, um die Anwendung zu debuggen.Weitere Informationen finden Sie im Debuggen von Routinen Laufzeitbibliotheks-Verweis.

Allgemeine Diagnose Makros MFC

ASSERT

Druckt eine Nachricht und dann das Programm ab, wenn der angegebene Ausdruck FALSE in der Debugversion der Bibliothek ergibt.

ASSERT_KINDOF

Testet, ob ein Objekt ein Objekt der angegebenen Klasse oder einer Klasse ist, die von der angegebenen Klasse abgeleitet ist.

ASSERT_VALID

Überprüft die interne Validität eines Objekts durch Aufrufen seiner AssertValid-Memberfunktion. Überschreiben von CObject i. d. R.

DEBUG_NEW

Stellt ein Dateiname und Zeilennummer für alle Objektzuordnungen im Debugmodus, um Speicherverluste zu ermitteln.

DEBUG_ONLY

Ähnlich wie ASSERT werden jedoch nicht auf den Wert des Ausdrucks. nützlich für Code, der nur im Debugmodus ausgeführt werden soll.

TRACE

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

Sie ÜBERPRÜFEN

Ähnlich wie ASSERT wertet den Ausdruck aber in der Releaseversion der Bibliothek sowie in der Debugversion aus.

Allgemeine Diagnose Variablen und Funktionen in MFC

afxDump

Globale Variablen, die CDumpContext Informationen an den Debugger ausgabefenster Debug oder Terminal sendet.

afxMemDF

Globale Variablen, die das Verhalten der Debug- speicherbelegungsfunktion steuert.

AfxCheckError

Globale Variablen verwendet, um übergebene SCODE zu testen, um zu überprüfen, ob ein Fehler aufgetreten ist und ggf. den entsprechenden Fehler auslöst.

AfxCheckMemory

Überprüft die Integrität aller derzeit belegte Speicher.

AfxDump

Wenn Sie im Debugger aufgerufen werden, während Dump der Zustand eines Objekts während des Debuggens.

AfxDumpStack

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

AfxEnableMemoryLeakDump

Aktiviert den Speicherverlustdump.

AfxEnableMemoryTracking

Stellt Speicher und nachverfolgung ab oder legt diese fest.

AfxIsMemoryBlock

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

AfxIsValidAddress

Überprüft, ob ein Bereich Speicherorte innerhalb der Grenzen des Programms ist.

AfxIsValidString

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

AfxSetAllocHook

Aktiviert das Aufrufen einer Funktion in jeder Speicherbelegung.

MFC-Objekt-Diagnosen-Funktionen

AfxDoForAllClasses

Nimmt eine bestimmte Aufgabe für alle CObject abgeleitete Klassen, die Typüberprüfung zur Laufzeit unterstützen.

AfxDoForAllObjects

Nimmt eine bestimmte Aufgabe für alle CObject abgeleitete Objekte, die mit new zugeordnet wurden.

Siehe auch

Konzepte

MFC-Makros und -globale Werte