Compartir a través de


Personalización de un volcado de objetos

Este tema se aplica a:

Edición

Visual Basic

C#

F#

C++

Web Developer

Express

El tema no es aplicable El tema no es aplicable El tema no es aplicable

Sólo para código nativo

El tema no es aplicable

Pro, Premium y Ultimate

El tema no es aplicable El tema no es aplicable El tema no es aplicable

Sólo para código nativo

El tema no es aplicable

Si se deriva una clase de CObject, puede reemplazarse la función miembro Dump para ofrecer información adicional cuando se utiliza DumpAllObjectsSince para realizar un volcado de memoria de objetos en la Ventana de salida.

La función Dump escribe una representación textual de las variables miembro del objeto en un contexto de volcado (CDumpContext). El contexto de volcado es similar a una secuencia de E/S. Se puede utilizar el operador de anexión (<<) para enviar datos a un CDumpContext.

Cuando se reemplaza la función Dump, primero se debería llamar a la versión de la clase base de Dump para realizar un volcado del contenido del objeto de la clase base. A continuación, se escribe una descripción textual y un valor descriptivo para cada variable miembro de la clase derivada.

La declaración de la función Dump presenta el siguiente aspecto:

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

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

Como el volcado de objetos sólo tiene sentido en la depuración del programa, la declaración de la función Dump se encuentra encerrada en un bloque #ifdef _DEBUG / #endif.

En el siguiente ejemplo, la función Dump llama primero a la función Dump para su clase base. A continuación, escribe una breve descripción de cada variable miembro, junto con el valor del miembro, en la secuencia de diagnóstico.

#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

Se debe suministrar un argumento CDumpContext que especifique dónde se escribirá el resultado del volcado. La versión de depuración de MFC suministra un objeto CDumpContext predefinido denominado afxDump que envía los resultados al depurador.

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

Vea también

Conceptos

Volcados de objetos

Otros recursos

La macro TRACE