다음을 통해 공유


개체 덤프 사용자 지정

업데이트: 2007년 11월

이 항목은 다음 언어에 적용됩니다.

Edition

Visual Basic

C#

C++

Web Developer

Express

항목이 적용되지 않음 항목이 적용되지 않음

네이티브 전용

항목이 적용되지 않음

Standard

항목이 적용되지 않음 항목이 적용되지 않음

네이티브 전용

항목이 적용되지 않음

Pro 및 Team

항목이 적용되지 않음 항목이 적용되지 않음

네이티브 전용

항목이 적용되지 않음

표의 범례:

항목이 적용됨

해당

항목이 적용되지 않음

해당 없음

항목이 적용되지만 명령은 기본적으로 숨겨짐

명령은 기본적으로 숨겨져 있습니다.

CObject에서 클래스를 파생시키는 경우 DumpAllObjectsSince를 사용하여 출력 창으로 개체를 덤프할 때 Dump 멤버 함수를 재정의하여 추가 정보를 제공할 수 있습니다.

Dump 함수는 덤프 컨텍스트(CDumpContext)에 개체 멤버 변수의 텍스트 표현을 작성합니다. 덤프 컨텍스트는 I/O 스트림과 유사합니다. 추가 연산자(<<)를 사용하여 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 매크로