Markieren Sie das Kontrollkästchen Englisch, um die englische Version dieses Artikels anzuzeigen. Sie können den englischen Text auch in einem Popup-Fenster einblenden, indem Sie den Mauszeiger über den Text bewegen.
Übersetzung
Englisch

Diagnosedienste

 

Veröffentlicht: August 2016

Die Microsoft Foundation Class-Bibliothek bietet viele Diagnosedienste, die das Debuggen von Programmen erleichtern. Zu diesen Diagnosediensten zählen Makros und globale Funktionen, die Ihnen das Nachverfolgen der Speicherzuweisungen von Programmen, das Sichern des Inhalts von Objekten zur Laufzeit und das Ausgeben von Debugmeldungen zur Laufzeit ermöglichen. Die Makros und globalen Funktionen für Diagnosedienste sind in folgende Kategorien gruppiert:

  • Allgemeine Diagnosemakros

  • Allgemeine Diagnosefunktionen und -Variablen

  • Objektdiagnosefunktionen

Diese Makros und Funktionen stehen in den Debug- und den endgültigen Produktversionen von MFC für alle von CObject abgeleiteten Klassen zur Verfügung. Mit Ausnahme von DEBUG_NEW und VERIFY führt jedoch keine von ihnen in der endgültigen Produktversion eine Aktion aus.

In der Debugbibliothek stehen alle zugewiesenen Speicherblöcke in aus einer Reihe von "Wächterbytes" bestehenden Klammern. Wenn diese Bytes durch einen fehlerhaften Schreibzugriff auf den Speicher gestört werden, können die Diagnoseroutinen ein Speicherproblem melden. Wenn Sie diese Zeile:

#define new DEBUG_NEW

in Ihre Implementierungsdatei einschließen, werden für jeden Aufruf von new der Dateiname und die Zeilennummer gespeichert, für die die Speicherzuweisung erfolgt ist. Die Funktion CMemoryState::DumpAllObjectsSince zeigt diese Zusatzinformationen an, was Ihnen das Erkennen von Speicherverlusten ermöglicht. Weitere Informationen zur Diagnoseausgabe finden Sie auch bei der Klasse CDumpContext.

Darüber hinaus unterstützt die C-Laufzeitbibliothek auch eine Reihe von Diagnosefunktionen, die Sie zum Debuggen von Anwendungen verwenden können. Weitere Informationen finden Sie unter Debugroutinen in der Referenz zur Laufzeitbibliothek.

Allgemeine MFC-Diagnosemakros

ASSERT

Gibt eine Meldung aus und bricht dann das Programm ab, wenn der angegebene Ausdruck in der Debugversion der Bibliothek als FALSE ausgewertet wird.

ASSERT_KINDOF

Prüft, ob ein Objekt ein Objekt der angegebenen Klasse oder einer aus der angegebenen Klasse abgeleiteten Klasse ist.

ASSERT_VALID

Prüft die interne Gültigkeit eines Objekts durch Aufrufen seiner AssertValid-Memberfunktion; normalerweise durch CObject außer Kraft gesetzt.

DEBUG_NEW

Gibt einen Dateinamen und eine Zeilennummer für alle Objektzuweisungen im Debugmodus an, um die Suche nach Speicherverlusten zu unterstützen.

DEBUG_ONLY

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

TRACE

Stellt eine printf-ähnliche Funktionalität in der Debugversion der Bibliothek zur Verfügung.

VERIFY

Ähnlich wie ASSERT, wertet den Ausdruck aber sowohl in der endgültigen Version der Bibliothek als auch in der Debugversion aus.

Allgemeine MFC-Diagnosevariablen und -Funktionen

afxDump

Globale Variable, die CDumpContext-Informationen an das Debuggerausgabefenster oder das Debugterminal sendet.

afxMemDF

Globale Variable, die das Verhalten der Debugspeicherzuweisung steuert.

AfxCheckError

Globale Variable, die zum Prüfen des übergebenen SCODEs verwendet wird, um festzustellen, ob es sich um einen Fehler handelt; löst in diesem Fall den entsprechenden Fehler aus.

AfxCheckMemory

Überprüft die Integrität des gesamten derzeit zugewiesenen Speichers.

AfxDump

Sichert bei einem Aufruf im Debugger den Status eines Objekts während des Debuggens.

AfxDumpStack

Generiert ein Image des aktuellen Stapels. Diese Funktion wird immer statisch gelinkt.

AfxEnableMemoryLeakDump

Ermöglicht das Sichern von Speicherverlusten.

AfxEnableMemoryTracking

Aktiviert und deaktiviert die Arbeitsspeicher-Nachverfolgung.

AfxIsMemoryBlock

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

AfxIsValidAddress

Überprüft, ob ein Speicheradressbereich innerhalb der Grenzen des Programms liegt.

AfxIsValidString

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

AfxSetAllocHook

Ermöglicht das Aufrufen einer Funktion für jede Speicherzuweisung.

MFC-Objektdiagnosefunktionen

AfxDoForAllClasses

Führt eine angegebene Funktion für alle von CObject abgeleiteten Klassen aus, die Typprüfung zur Laufzeit unterstützen.

AfxDoForAllObjects

Führt eine angegebene Funktion für alle von CObject abgeleiteten Objekte aus, die mithilfe von new zugewiesen wurden.

Anzeigen: