Personnalisation d'un dump d'objets
Mise à jour : novembre 2007
Cette rubrique s'applique à :
Édition |
Visual Basic |
C# |
C++ |
Web Developer |
---|---|---|---|---|
Express |
Natif uniquement |
|||
Standard |
Natif uniquement |
|||
Pro et Team |
Natif uniquement |
Légende du tableau :
Applicable |
|
Non applicable |
|
Commande ou commandes masquées par défaut. |
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