Share via


Anpassung von Objektdumps

Dieses Thema gilt für folgende Anwendungsbereiche:

Edition

Visual Basic

C#

F#

C++

Web Developer

Express

Thema ist nicht vorhanden Thema ist nicht vorhanden Thema ist nicht vorhanden

Nur "Systemeigen"

Thema ist nicht vorhanden

Pro, Premium und Ultimate

Thema ist nicht vorhanden Thema ist nicht vorhanden Thema ist nicht vorhanden

Nur "Systemeigen"

Thema ist nicht vorhanden

Wenn Sie eine Klasse von CObject ableiten, können Sie die Memberfunktion Dump überschreiben, um bei Verwendung von DumpAllObjectsSince für den Objektdump zusätzliche Informationen im Ausgabefenster anzuzeigen.

Die Dump-Funktion gibt eine Textdarstellung der objektspezifischen Membervariablen in einem Dumpkontext (CDumpContext) aus. Der Dumpkontext ist mit einem E/A-Stream vergleichbar. Mithilfe des Anfügeoperators (<<) können Daten an einen CDumpContext gesendet werden.

Wenn Sie die Dump-Funktion überschreiben, sollten Sie zunächst die Basisklassenversion von Dump aufrufen, um den Inhalt des Basisklassenobjekts auszugeben. Lassen Sie für jede Membervariable der abgeleiteten Klasse eine Textdarstellung und einen Wert ausgeben.

Die Deklaration der Dump-Funktion sieht wie folgt aus:

class CPerson : public CObject
{
public:
#ifdef _DEBUG
    virtual void Dump( CDumpContext& dc ) const;
#endif

    CString m_firstName;
    CString m_lastName;
    // And so on...
};

Da das Ausgeben von Objekten nur beim Debuggen eines Programms sinnvoll ist, wird die Deklaration der Dump-Funktion in einen #ifdef _DEBUG / #endif-Block eingeschlossen.

Im folgenden Beispiel ruft die Dump-Funktion zuerst die Dump-Funktion für ihre Basisklasse auf. Dann wird eine Kurzbeschreibung jeder Membervariablen sowie der zugehörige Wert in den Diagnosestream geschrieben.

#ifdef _DEBUG
void CPerson::Dump( CDumpContext& dc ) const
{
    // Call the base class function first.
    CObject::Dump( dc );

    // Now do the stuff for our specific class.
    dc << "last name: " << m_lastName << "\n"
        << "first name: " << m_firstName << "\n";
}
#endif

Sie müssen ein CDumpContext-Argument angeben, um festzulegen, wo der Dump ausgegeben wird. Die Debugversion von MFC bietet ein vordefiniertes CDumpContext-Objekt mit dem Namen afxDump, durch das die Ausgabe an den Debugger gesendet wird.

CPerson* pMyPerson = new CPerson;
// Set some fields of the CPerson object.
//...
// Now dump the contents.
#ifdef _DEBUG
pMyPerson->Dump( afxDump );
#endif

Siehe auch

Konzepte

Objektdumps

Weitere Ressourcen

Das TRACE-Makro