다음을 통해 공유


IDiaStackFrame

스택 프레임의 속성을 노출합니다.

IDiaStackFrame : IUnknown

메서드에서 Vtable 순서

다음은이 인터페이스에 의해 지원 되는 방법입니다.

메서드

설명

IDiaStackFrame::get_allocatesBasePointer

코드에서이 주소 범위에 대 한 기본 포인터 할당 되도록 나타내는 플래그를 검색 합니다.이 메서드는 사용되지 않습니다.

IDiaStackFrame::get_base

프레임의 기본 주소를 검색합니다.

IDiaStackFrame::get_cplusplusExceptionHandling

C + + 예외 처리 적용 됩니다 나타내는 플래그를 검색 합니다.

IDiaStackFrame::get_functionStart

블록의 함수 진입점이 포함 되어 있음을 나타내는 플래그를 검색 합니다.

IDiaStackFrame::get_lengthLocals

지역 변수는 스택에 푸시된 바이트 수를 검색 합니다.

IDiaStackFrame::get_lengthParams

매개 변수는 스택에 푸시된 바이트 수를 검색 합니다.

IDiaStackFrame::get_lengthProlog

프롤로그 코드 블록에서의 바이트 수를 검색합니다.

IDiaStackFrame::get_lengthSavedRegisters

저장 된 레지스터는 스택에 푸시된 바이트 수를 검색 합니다.

IDiaStackFrame::get_localsBase

지역 변수를 기본 주소를 검색합니다.

IDiaStackFrame::get_maxStack

스택 프레임에 전달 되는 바이트 수를 검색 합니다.

IDiaStackFrame::get_rawLVarInstanceValue

원시 바이트 수로 지정 된 지역 변수의 값을 검색합니다.

IDiaStackFrame::get_registerValue

지정 된 레지스터의 값을 검색합니다.

IDiaStackFrame::get_returnAddress

프레임의 반환 주소를 검색합니다.

IDiaStackFrame::get_size

프레임의 바이트 크기를 검색합니다.

IDiaStackFrame::get_systemExceptionHandling

시스템 예외 처리 적용 됩니다 나타내는 플래그를 검색 합니다.

IDiaStackFrame::get_type

프레임 형식을 검색합니다.

설명

스택 프레임은 함수 호출의 추상화를 실행 하는 동안입니다.

호출자에 대 한 참고 사항

이 인터페이스를 호출 하 여 얻을 IDiaEnumStackFrames::Next 메서드가 있습니다.볼의 IDiaEnumStackFrames 예 가져오는 방법에 대 한 인터페이스는 IDiaStackFrame 인터페이스입니다.

예제

스택 프레임의 다양 한 특성을 표시 하는이 예제입니다.

void PrintStackFrame(IDiaStackFrame* pFrame)
{
    if (pFrame != NULL)
    {
        ULONGLONG bottom = 0;
        ULONGLONG top    = 0;

        if (pFrame->get_base(&bottom) == S_OK &&
            pFrame->get_registerValue( CV_REG_ESP, &top ) == S_OK )
        {
             printf("range = 0x%08I64x - 0x%08I64x\n", bottom, top);
        }

        ULONGLONG returnAddress = 0;
        if (pFrame->get_returnAddress(&returnAddress) == S_OK)
        {
             printf("return address = 0x%08I64x\n", returnAddress);
        }

        DWORD lengthFrame     = 0;
        DWORD lengthLocals    = 0;
        DWORD lengthParams    = 0;
        DWORD lengthProlog    = 0;
        DWORD lengthSavedRegs = 0;
        if (pFrame->get_size(&lengthFrame) == S_OK &&
            pFrame->get_lengthLocals(&lengthLocals) == S_OK &&
            pFrame->get_lengthParams(&lengthParams) == S_OK &&
            pFrame->get_lengthProlog(&lengthProlog) == S_OK &&
            pFrame->get_lengthSavedRegisters(&lengthSavedRegs) == S_OK)
        {
            printf("stack frame size          = 0x%08lx bytes\n", lengthFrame);
            printf("length of locals          = 0x%08lx bytes\n", lengthLocals);
            printf("length of parameters      = 0x%08lx bytes\n", lengthParams);
            printf("length of prolog          = 0x%08lx bytes\n", lengthProlog);
            printf("length of saved registers = 0x%08lx bytes\n", lengthSavedRegs);
        }
    }
}

요구 사항

헤더: Dia2.h

라이브러리: diaguids.lib

DLL: msdia80.dll

참고 항목

참조

IDiaEnumStackFrames

IDiaEnumStackFrames::Next

IDiaStackWalkFrame

기타 리소스

인터페이스(디버그 인터페이스 액세스 SDK)