共用方式為


IDiaStackFrame

堆疊框架的屬性公開 (expose)。

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)