Share via


CDumpContext 클래스

사용자가 읽을 수 있는 텍스트 형식으로 스트림 지향 진단 출력을 지원합니다.

구문

class CDumpContext

멤버

공용 생성자

속성 설명
CDumpContext::CDumpContext CDumpContext 개체를 생성합니다.

공용 메서드

이름 설명
CDumpContext::D umpAsHex 표시된 항목을 16진수 형식으로 덤프합니다.
CDumpContext::Flush 덤프 컨텍스트 버퍼의 모든 데이터를 플러시합니다.
CDumpContext::GetDepth 덤프의 깊이에 해당하는 정수를 가져옵니다.
CDumpContext::HexDump 배열에 포함된 바이트를 16진수 형식으로 덤프합니다.
CDumpContext::SetDepth 덤프의 깊이를 설정합니다.

Public 연산자

이름 설명
CDumpContext::operator << 덤프 컨텍스트에 변수와 개체를 삽입합니다.

설명

CDumpContext 에는 기본 클래스가 없습니다.

대부분의 덤핑에 대해 미리 선언된 CDumpContext 개체인 afxDump를 사용할 수 있습니다. 이 afxDump 개체는 Microsoft Foundation 클래스 라이브러리의 디버그 버전에서만 사용할 수 있습니다.

일부 메모리 진단 서비스는 출력에 사용합니다 afxDump .

Windows 환경에서는 개념적으로 스트림과 유사한 미리 정의된 afxDump 개체의 cerr 출력이 Windows 함수 OutputDebugString를 통해 디버거로 라우팅됩니다.

클래스에는 CDumpContext 개체의 데이터를 덤프하는 포인터에 대한 CObject 오버로드된 insertion(<<) 연산자가 있습니다. 파생 개체에 대한 사용자 지정 덤프 형식이 필요한 경우 CObject::D ump를 재정의합니다. 대부분의 Microsoft Foundation 클래스는 재정의된 Dump 멤버 함수를 구현합니다.

와 같이 파생CObject되지 않은 클래스에는 자주 사용되는 구조(예: CString, CTimeCTimeSpan)와 같이 CFileStatusCPointCRect자체 오버로드된 CDumpContext 삽입 연산자가 있습니다.

클래스 구현에서 IMPLEMENT_DYNAMIC 또는 IMPLEMENT_SERIAL 매크로를 사용하는 경우 파생 클래스의 이름을 출력합니다CObject.CObject::Dump 그렇지 않으면 인쇄 CObject됩니다.

클래스는 CDumpContext 라이브러리의 디버그 및 릴리스 버전 모두에서 사용할 수 있지만 Dump 멤버 함수는 디버그 버전에서만 정의됩니다. #ifdef _DEBUG#endif / 문을 사용하여 사용자 지정 Dump 멤버 함수를 포함하여 진단 코드를 대괄호로 묶습니다.

고유한 개체를 CDumpContext 만들기 전에 덤프 대상으로 사용되는 개체를 만들어야 CFile 합니다.

자세한 내용은 CDumpContextMFC 애플리케이션 디버깅을 참조 하세요.

#define _DEBUG

상속 계층 구조

CDumpContext

요구 사항

헤더: afx.h

CDumpContext::CDumpContext

클래스 CDumpContext의 개체를 생성합니다.

CDumpContext(CFile* pFile = NULL);

매개 변수

pFile
덤프 대상인 개체에 CFile 대한 포인터입니다.

설명

afxDump 개체가 자동으로 생성됩니다.

덤프 컨텍스트가 활성화되어 있는 동안에는 기본 CFile 에 쓰지 마세요. 그렇지 않으면 덤프를 방해합니다. Windows 환경에서 출력은 Windows 함수 OutputDebugString를 통해 디버거로 라우팅됩니다.

예시

CFile f;
if (!f.Open(_T("dump.txt"), CFile::modeCreate | CFile::modeWrite))
{
   AFXDUMP(_T("Unable to open file\n"));
   exit(1);
}
CDumpContext dc(&f);

CDumpContext::D umpAsHex

16진수로 서식이 지정된 형식을 덤프합니다.

CDumpContext& DumpAsHex(BYTE b);
CDumpContext& DumpAsHex(DWORD dw);
CDumpContext& DumpAsHex(int n);
CDumpContext& DumpAsHex(LONG l);
CDumpContext& DumpAsHex(LONGLONG n);
CDumpContext& DumpAsHex(UINT u);
CDumpContext& DumpAsHex(ULONGLONG n);
CDumpContext& DumpAsHex(WORD w);

Return Value

CDumpContext 개체에 대한 참조입니다.

설명

이 멤버 함수를 호출하여 지정된 형식의 항목을 16진수로 덤프합니다. 배열을 덤프하려면 CDumpContext::HexDump를 호출합니다.

예시

#if _DEBUG
afxDump.DumpAsHex(115);
#endif

CDumpContext::Flush

버퍼에서 데이터를 다시 기본 덤프 컨텍스트에 연결된 파일에 기록하도록 합니다.

void Flush();

예시

#if _DEBUG
afxDump.Flush();
#endif

CDumpContext::GetDepth

깊거나 얕은 덤프가 처리 중인지 여부를 확인합니다.

int GetDepth() const;

Return Value

에 의해 SetDepth설정된 덤프의 깊이입니다.

예시

SetDepth에 대한 예제를 참조하세요.

CDumpContext::HexDump

16진수로 서식이 지정된 바이트 배열을 덤프합니다.

void HexDump(
    LPCTSTR lpszLine,
    BYTE* pby,
    int nBytes,
    int nWidth);

매개 변수

lpszLine
새 줄의 시작 부분에 출력할 문자열입니다.

pby
덤프할 바이트를 포함하는 버퍼에 대한 포인터입니다.

nBytes
덤프할 바이트 수입니다.

nWidth
줄당 덤프되는 최대 바이트 수입니다(출력 선의 너비가 아님).

설명

단일 특정 항목 유형을 16진수로 덤프하려면 CDumpContext::D umpAsHex를 호출합니다.

예시

#if _DEBUG
TCHAR test[] = _T("This is a test of CDumpContext::HexDump\n");
afxDump.HexDump(_T("."), (BYTE *)test, sizeof(test), 20);
#endif

CDumpContext::operator <<

지정된 데이터를 덤프 컨텍스트에 출력합니다.

CDumpContext& operator<<(const CObject* pOb);
CDumpContext& operator<<(const CObject& ob);
CDumpContext& operator<<(LPCTSTR lpsz);
CDumpContext& operator<<(const void* lp);
CDumpContext& operator<<(BYTE by);
CDumpContext& operator<<(WORD w);
CDumpContext& operator<<(DWORD dw);
CDumpContext& operator<<(int n);
CDumpContext& operator<<(double d);
CDumpContext& operator<<(float f);
CDumpContext& operator<<(LONG l);
CDumpContext& operator<<(UINT u);
CDumpContext& operator<<(LPCWSTR lpsz);
CDumpContext& operator<<(LPCSTR lpsz);
CDumpContext& operator<<(LONGLONG n);
CDumpContext& operator<<(ULONGLONG n);
CDumpContext& operator<<(HWND h);
CDumpContext& operator<<(HDC h);
CDumpContext& operator<<(HMENU h);
CDumpContext& operator<<(HACCEL h);
CDumpContext& operator<<(HFONT h);

Return Value

참조입니다 CDumpContext . 반환 값을 사용하여 소스 코드의 한 줄에 여러 삽입을 작성할 수 있습니다.

설명

삽입 연산자는 포인터 및 대부분의 기본 형식에 대해 오버로드 CObject 됩니다. 문자에 대한 포인터는 문자열 내용의 덤프를 생성합니다. 주소의 16진수 덤프만 발생하는 결과에 대한 포인터 void 입니다. LONGLONG은 64비트 부가 정수의 덤프를 생성합니다. ULONGLONG은 64비트 부호 없는 정수 덤프를 생성합니다.

클래스 구현에서 IMPLEMENT_DYNAMIC 또는 IMPLEMENT_SERIAL 매크로를 사용하는 경우 삽입 연산 CObject::Dump자는 파생 클래스의 CObject이름을 출력합니다. 그렇지 않으면 인쇄 CObject됩니다. 클래스의 함수를 Dump 재정의하는 경우 16진수 덤프 대신 개체 내용의 보다 의미 있는 출력을 제공할 수 있습니다.

예시

#if _DEBUG
CStringList li;
li.AddHead(_T("item 0"));
li.AddHead(_T("item 1"));
CString s = _T("test");
int i = 7;
long lo = 1000000000L;
LONGLONG lolo = 12345678901234i64;
afxDump << _T("list=") << &li << _T("string=")
        << s << _T("int=") << i << _T("long=") << lo
        << _T("LONGLONG=") << lolo << _T("\n");
#endif

CDumpContext::SetDepth

덤프의 깊이를 설정합니다.

void SetDepth(int nNewDepth);

매개 변수

nNewDepth
새 깊이 값입니다.

설명

다른 개체에 대한 포인터가 없는 기본 형식 또는 단순 CObject 형식을 덤프하는 경우 값 0으로 충분합니다. 0보다 큰 값은 모든 개체가 재귀적으로 덤프되는 딥 덤프를 지정합니다. 예를 들어 컬렉션의 전체 덤프는 컬렉션의 모든 요소를 덤프합니다. 파생 클래스에서 다른 특정 깊이 값을 사용할 수 있습니다.

참고 항목

순환 참조는 심층 덤프에서 검색되지 않으며 무한 루프가 발생할 수 있습니다.

예시

#if _DEBUG
afxDump.SetDepth(1); // Specifies deep dump
ASSERT(afxDump.GetDepth() == 1);
#endif

참고 항목

계층 구조 차트
CFile 클래스
CObject 클래스