Die Microsoft Foundation Class-Bibliothek liefert viele diagnostische Dienstleistungen, die Ihre Programme einfacher debuggen. Diese Diagnose-Services umfassen Makros und globale Funktionen, mit denen Sie Ihre Programmspeicher Netzbereiche, dump den Inhalt der Objekte während der Laufzeit, und Drucken Debug-Meldungen während der Laufzeit zu verfolgen. Die Makros und globale Funktionen für Diagnose-Services sind in die folgenden Kategorien gruppiert.:
Diese Makros und Funktionen sind für alle in den Debug- und Release-Versionen von MFC von CObject abgeleiteten Klassen verfügbar. Jedoch nichts außer DEBUG_NEW und überprüfen, ob alle in der Release-version.
In der Debug-Bibliothek sind alle reservierten Speicherblöcke mit einer Reihe von "Garde Bytes." eingeschlossen. Wenn diese Bytes durch eine fehlerhafte Speicher schreiben gestört sind, können die diagnostischen Routinen ein Problem melden. Wenn Sie die Zeile aufnehmen
# Definieren Sie neue DEBUG_NEW
in der Implementierungsdatei speichert alle Aufrufe an neue der Dateiname und die Zeilennummer, wo die Speicherzuordnung stattfand. Die Funktion CMemoryState::DumpAllObjectsSince zeigt diese zusätzlichen Informationen, so dass Sie Speicherverluste ermitteln. Verweisen Sie auch auf die Klasse CDumpContext für zusätzliche Informationen über Diagnoseausgang.
Darüber hinaus unterstützt die C Run-Time Bibliothek auch eine Reihe von Diagnosefunktionen, die Sie verwenden können, um Ihre Anwendungen zu debuggen. Weitere Informationen finden Sie unter Debug-Routinen in der Run-Time Library Reference.
Allgemeine Diagnose von MFC-Makros
| GELTEND MACHEN | Druckt eine Meldung und dann bricht das Programm, wenn der angegebene Ausdruck FALSE in der Debug-Version der Bibliothek ergibt. |
| ASSERT_KINDOF | Tests, die ein Objekt ein Objekt der angegebenen Klasse oder einer Klasse ist, abgeleitet von der angegebenen Klasse. |
| ASSERT_VALID | Testet die interne Validität eines Objekts durch die AssertValid -Memberfunktion aufrufen; in der Regel Überschreiben von CObject. |
| DEBUG_NEW | Stellt eine Reihe Filename und Line für alle Objekt Zuweisungen im Debug-Modus, um Speicherverluste zu finden. |
| SPUR | Bietet der Printf-Funktion in der Debug-Version der Bibliothek, wie. |
| TRACE0 | Ähnlich wie TRACE aber nimmt ein Format-string ohne Argumente. |
| TRACE1 | Ähnlich wie TRACE aber nimmt ein Format-string mit einem einzigen argument. |
| TRACE2 | Ähnlich wie TRACE aber nimmt einen Format-string mit zwei Argumenten. |
| TRACE3 | Ähnlich wie TRACE aber nimmt einen Format-string mit drei Argumenten. |
| ÜBERPRÜFEN | Ähnlich wie ASSERT wertet aber den Ausdruck in der Release-Version der Bibliothek ebenso wie in der Debug-version. |
MFC allgemeine Diagnose Variablen und Funktionen
| afxDump | Globale Variable, die CDumpContext Informationen Ausgabefenster des Debuggers oder das Debug-Terminal sendet. |
| afxMemDF | Globale Variable, die das Verhalten der die Debug-Speicherreservierungsfunktion steuert. |
| afxTraceEnabled | Globale Variable verwendet, um aktivieren oder deaktivieren die Ausgabe von TRACE -Makro. |
| afxTraceFlags | Globale Variable verwendet, um die integrierten reporting-Funktionen von MFC einschalten. |
| AfxCheckError | Globale Variable verwendet, um das übergebene testen SCODE zu sehen, wenn es sich um einen Fehler handelt und wenn ja, wird den entsprechenden Fehler. |
| AfxCheckMemory | Überprüft die Integrität aller derzeit Arbeitsspeicher. |
| AfxDump | Wenn während der Debugger aufgerufen, gibt den Zustand eines Objekts während des Debuggens. |
| AfxDumpStack | Ein Bild des aktuellen Stapels zu generieren. Diese Funktion ist immer statisch gelinkt. |
| AfxEnableMemoryTracking | Stellt Speicher Überwachung ein- und ausschalten. |
| AfxIsMemoryBlock | Überprüft, ob ein Speicherblock richtig zugewiesen wurde. |
| AfxIsValidAddress | Überprüft, ob ein Speicher-Adressbereich innerhalb des Programms ist. |
| Sich | Bestimmt, ob ein Zeiger auf eine Zeichenfolge gültig ist. |
| AfxSetAllocHook | Ermöglicht das Aufrufen einer Funktion auf jeder Speicherreservierung. |
| AfxDoForAllClasses | Führt eine angegebene Funktion für alle CObject-abgeleitete Klassen, die Typüberprüfung zur Laufzeit unterstützen. |
| AfxDoForAllObjects | Führt eine angegebene Funktion für alle CObject-abgeleitete Objekte, die mit neuen zugeordnet wurden. |