Personalizzazione di dump di oggetti

Le informazioni contenute in questo argomento sono valide per:

Edizione

Visual Basic

C#

F#

C++

Web Developer

Express

Argomento non applicabile Argomento non applicabile Argomento non applicabile

Solo nativo

Argomento non applicabile

Pro, Premium e Ultimate

Argomento non applicabile Argomento non applicabile Argomento non applicabile

Solo nativo

Argomento non applicabile

Quando si deriva una classe da CObject, è possibile eseguire l'override della funzione membro Dump per fornire ulteriori informazioni quando si utilizza DumpAllObjectsSince per eseguire il dump di oggetti nella finestra Output.

La funzione Dump scrive una rappresentazione testuale delle variabili membro dell'oggetto in un contesto di dump (CDumpContext). Il contesto di dump è analogo a un flusso I/O. È possibile utilizzare l'operatore di inserzione (<<) per inviare dati a CDumpContext.

Quando si esegue l'override della funzione Dump, è opportuno chiamare dapprima la versione della classe base di Dump per effettuare il dump del contenuto dell'oggetto classe base, generando poi una descrizione testuale e un valore per ciascuna variabile membro della classe derivata.

La dichiarazione della funzione Dump sarà del seguente tipo:

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

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

Dal momento che il dump di oggetti ha senso solo quando si effettua il debug del programma, la dichiarazione della funzione Dump è racchiusa all'interno di un blocco #ifdef _DEBUG / #endif.

Nell'esempio che segue la funzione Dump chiama dapprima la funzione Dump della relativa classe base e poi scrive nel flusso diagnostico una breve descrizione di ciascuna variabile membro, insieme al valore del membro.

#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

È necessario fornire un argomento CDumpContext per specificare la posizione in cui verrà generato l'output del dump. La versione di debug di MFC offre un oggetto CDumpContext predefinito denominato afxDump che invia l'output al debugger.

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

Vedere anche

Concetti

Dump di oggetti

Altre risorse

Utilizzo della macro TRACE