Partager via


Personnalisation d'un dump d'objets

Cette rubrique s'applique à :

Édition

Visual Basic

C#

F#

C++

Web Developer

Express

La rubrique ne s'applique pas La rubrique ne s'applique pas La rubrique ne s'applique pas

Natif uniquement

La rubrique ne s'applique pas

Pro, Premium et Ultimate

La rubrique ne s'applique pas La rubrique ne s'applique pas La rubrique ne s'applique pas

Natif uniquement

La rubrique ne s'applique pas

Lorsque vous dérivez une classe de CObject, vous pouvez substituer la fonction membre Dump pour fournir des informations supplémentaires lorsque vous utilisez DumpAllObjectsSince pour faire un dump des objets dans la fenêtre Sortie.

La fonction Dump écrit une représentation textuelle des variables de membre de l'objet dans un contexte de dump (CDumpContext). Le contexte de dump est similaire à un flux d'E/S. Vous pouvez utiliser l'opérateur d'insertion (<<) pour envoyer des données vers un CDumpContext.

Lorsque vous substituez la fonction Dump, vous devez d'abord appeler la version classe de base de la fonction Dump pour faire un dump du contenu de l'objet de classe de base. Sortez ensuite une description texte et une valeur pour chaque variable de membre de votre classe dérivée.

La déclaration de la fonction Dump se présente de la façon suivante :

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

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

Dans la mesure où le dump d'objets n'a de sens que dans le cadre du débogage de votre programme, la déclaration de la fonction Dump est mise entre parenthèses avec un bloc #ifdef _DEBUG / #endif.

Dans l'exemple suivant, la fonction Dump appelle d'abord la fonction Dump pour sa classe de base. Elle écrit ensuite une brève description de chaque variable de membre avec la valeur du membre dans le flux du diagnostic.

#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

Vous devez fournir un argument CDumpContext pour spécifier la destination de la sortie du dump. La version Debug des MFC fournit un objet CDumpContext prédéfini, nommé afxDump, qui envoie la sortie au débogueur.

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

Voir aussi

Concepts

Dumps d'objets

Autres ressources

Macro TRACE