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