Поделиться через


Настройка дампа объекта

Обновлен: Ноябрь 2007

Этот раздел применим к:

Выпуск

Visual Basic

C#

C++

Web Developer

Экспресс-выпуск

Тема не применяется Тема не применяется

Только машинные коды

Тема не применяется

Standard

Тема не применяется Тема не применяется

Только машинные коды

Тема не применяется

Pro и Team

Тема не применяется Тема не применяется

Только машинные коды

Тема не применяется

Обозначения:

Тема применяется

Применяется

Тема не применяется

Неприменимо

Тема применяется, но команда по умолчанию сокрыта

Команда или команды скрытые по умолчанию.

Если класс наследуется от CObject, можно переопределить функцию-член Dump, чтобы получить больше сведений при использовании DumpAllObjectsSince для вывода объектов в Окне вывода.

Функция Dump записывает текстовое представление переменных-членов объекта в контекст дампа (CDumpContext). Контекст дампа подобен потоку ввода-вывода. Оператор добавления (<<) используется для отправки данных в CDumpContext.

При переопределении функции Dump следует вначале вызвать версию Dump базового класса для вывода содержимого объектов базового класса. Затем вывести текстовое описание и значение для каждой переменной-члена производного класса.

Объявление функции Dump выглядит следующим образом:

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

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

Поскольку формирование дампа объекта имеет смысл только при отладке программы, объявление функции Dump заключается в блок #ifdef _DEBUG / #endif.

В следующем примере функция Dump сначала вызывает функцию Dump для базового класса. Затем пишет короткое описание каждой переменной-члена и вместе со значением этой переменной направляет его в диагностический поток.

#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

Для указания, куда будут направлены выходные данные дампа, следует применить аргумент CDumpContext. Отладочная версия MFC использует предопределенный объект CDumpContext с именем afxDump, который направляет выходные данные в отладчик.

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

См. также

Основные понятия

Дампы объектов

Другие ресурсы

Макрос TRACE