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 方法获取此接口。为获取 IDiaStackFrame 接口的一个示例参见 IDiaEnumStackFrames 接口。

示例

此示例演示堆栈帧的各个属性。

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)