다음을 통해 공유


AfxDumpStack

현재 스택의 이미지를 생성 하려면이 전역 함수를 사용할 수 있습니다.

void AFXAPI AfxDumpStack(
   DWORD dwTarget = AFX_STACK_DUMP_TARGET_DEFAULT
);

매개 변수

  • dwTarget
    덤프 출력의 대상을 나타냅니다.가능한 값의 비트 OR (를 사용 하 여 조합할 수 있습니다**|**) 연산자는 다음과 같습니다:

    • AFX_STACK_DUMP_TARGET_TRACE 보내는 방법으로 출력을 추적 매크로.추적 매크로 생성 출력 디버그 빌드에서 될 것입니다. 릴리스 빌드에 없음 출력을 생성합니다.또한, 추적 디버거 외에 다른 대상으로 리디렉션할 수 있습니다.

    • AFX_STACK_DUMP_TARGET_DEFAULT 보냅니다 덤프 출력에서 기본 대상입니다.이동은 디버그 출력의 추적 매크로.릴리스 빌드에서 출력을 클립보드로 이동합니다.

    • AFX_STACK_DUMP_TARGET_CLIPBOARD 는 클립보드에 출력을 보냅니다.으로 일반 텍스트를 사용 하 여 클립보드에 해당 데이터가 배치 되는 CF_TEXT 클립보드 형식입니다.

    • AFX_STACK_DUMP_TARGET_BOTH 보냅니다 클립보드 및 출력은 추적 매크로 동시에.

    • AFX_STACK_DUMP_TARGET_ODS 보내는 출력 직접 디버거를 통해 Win32 함수 OutputDebugString().이 옵션에 모두 디버그 디버거 출력 생성 및 릴리스 빌드 프로세스에 디버거가 연결 되어 있는 경우.AFX_STACK_DUMP_TARGET_ODS (연결 된 경우) 디버거를 항상 도달 및 리디렉션될 수 없습니다.

설명

아래 예제에서는 한 줄 전화에서 생성 된 출력을 반영 AfxDumpStack MFC 대화 상자 응용 프로그램에는 단추 처리기에서:

=== begin AfxDumpStack output ===

00427D55: DUMP2\DEBUG\DUMP2.EXE! void AfxDumpStack(unsigned long) + 181 bytes

0040160B: DUMP2\DEBUG\DUMP2.EXE! void CDump2Dlg::OnClipboard(void) + 14 bytes

0044F884: DUMP2\DEBUG\DUMP2.EXE! int _AfxDispatchCmdMsg(class CCmdTarget *,

unsigned int,int,void ( CCmdTarget::*)(void),void *,unsigned int,struct AFX_CMDHANDLE

0044FF7B: DUMP2\DEBUG\DUMP2.EXE! virtual int CCmdTarget::OnCmdMsg(unsigned

int,int,void *,struct AFX_CMDHANDLERINFO *) + 626 bytes

00450C71: DUMP2\DEBUG\DUMP2.EXE! virtual int CDialog::OnCmdMsg(unsigned

int,int,void *,struct AFX_CMDHANDLERINFO *) + 36 bytes

00455B27: DUMP2\DEBUG\DUMP2.EXE! virtual int CWnd::OnCommand(unsigned

int,long) + 312 bytes

00454D3D: DUMP2\DEBUG\DUMP2.EXE! virtual int CWnd::OnWndMsg(unsigned

int,unsigned int,long,long *) + 83 bytes

00454CC0: DUMP2\DEBUG\DUMP2.EXE! virtual long CWnd::WindowProc(unsigned

int,unsigned int,long) + 46 bytes

004528D9: DUMP2\DEBUG\DUMP2.EXE! long AfxCallWndProc(class CWnd *,struct

HWND__ *,unsigned int,unsigned int,long) + 237 bytes

00452D34: DUMP2\DEBUG\DUMP2.EXE! long AfxWndProc(struct HWND__ *,unsigned

int,unsigned int,long) + 129 bytes

BFF73663: WINDOWS\SYSTEM\KERNEL32.DLL! ThunkConnect32 + 2148 bytes

BFF928E0: WINDOWS\SYSTEM\KERNEL32.DLL! UTUnRegister + 2492 bytes

=== end AfxDumpStack() output ===

위의 출력에서 각 줄의 마지막 함수 호출을 함수 호출과 호출 함수 프로토타입을 포함 된 모듈의 전체 경로 이름 주소를 나타냅니다.함수 호출 스택에 있는 함수의 정확한 주소에서 일어나지 않으면, 바이트 오프셋 표시 됩니다.

예를 들어, 위의 출력의 첫 줄에 다음 표에 설명 되어:

Output

설명

00427D55:

마지막 함수 호출의 반환 주소를 합니다.

DUMP2\DEBUG\DUMP2.EXE!

함수 호출을 포함 하는 모듈의 전체 경로 이름입니다.

void AfxDumpStack(unsigned long)

함수 프로토타입 호출 됩니다.

+ 181 bytes

함수 프로토타입의 주소에서 바이트 오프셋 (이 경우 void AfxDumpStack(unsigned long)) 반환 주소 (이 경우 00427D55).

AfxDumpStackMFC 라이브러리의 디버그 빌드와 버전에서 사용할 수 있습니다. 그러나도 공유 DLL에서 MFC 실행 파일을 사용 하는 경우, 함수는 항상 정적으로 연결 되어 있습니다.공유 라이브러리 환경 구현 함수 mfcs42에 나와 있습니다.LIB 라이브러리 (및 그 변종)입니다.

이 함수를 제대로 사용 하려면:

  • IMAGEHLP 파일입니다.DLL 경로에 있어야 합니다.이 DLL이 없는 경우 함수는 오류 메시지가 표시 됩니다.참조 이미지 라이브러리 도움말 IMAGEHLP에 의해 제공 되는 함수 집합에 대 한 내용은.

  • 스택에 있는 프레임 모듈 디버깅 정보를 포함 해야 합니다.디버깅 정보를 포함 하지 않는 경우 함수는 스택 추적을 계속 생성 합니다 있지만 추적 보다 자세히 설명 됩니다.

요구 사항

헤더: afx.h

참고 항목

참조

afxDump (mfc에서 CDumpContext)

개념

MFC 매크로 전역