DEBUG_STACK_FRAME結構 (dbgeng.h)
DEBUG_STACK_FRAME 結構描述堆疊框架和堆疊框架目前指令的位址。
語法
typedef struct _DEBUG_STACK_FRAME {
ULONG64 InstructionOffset;
ULONG64 ReturnOffset;
ULONG64 FrameOffset;
ULONG64 StackOffset;
ULONG64 FuncTableEntry;
ULONG64 Params[4];
ULONG64 Reserved[6];
BOOL Virtual;
ULONG FrameNumber;
} DEBUG_STACK_FRAME, *PDEBUG_STACK_FRAME;
成員
InstructionOffset
進程虛擬位址空間中堆疊框架相關指示的位置。 這通常是下一個堆疊框架的傳回位址,如果框架位於堆疊頂端,則為目前的指令指標。
ReturnOffset
進程虛擬位址空間中堆疊框架之傳回位址的位置。 這通常是先前堆疊框架的相關指示。
FrameOffset
如果已知,進程虛擬位址空間中的堆疊框架位置。 某些處理器架構沒有框架或有多個框架。 在這些情況下,引擎會為指定的堆疊層級選擇最代表的值。
StackOffset
處理程式堆疊之虛擬位址空間中的位置。
FuncTableEntry
如果有的話,此框架之函式專案的目標虛擬位址空間中的位置。 設定時,不保證此指標會無限期保持有效,且不應保留以供日後使用。 請改為儲存 InstructionOffset 的值,並將其與 IDebugSymbols3::GetFunctionEntryByOffset 搭配使用,以便稍後擷取函式項目資訊。
Params[4]
如果可用,則會傳遞至函式的前四個堆疊位置值。 如果少於四個自變數,其餘項目會設定為零。 這些堆疊位置不保證包含參數值。 某些呼叫慣例和編譯程式優化可能會干擾參數信息的識別。 如需更詳細的自變數資訊和適當的位置處理,請使用 IDebugSymbols::GetScopeSymbolGroup 來擷取實際的參數符號。
Reserved[6]
保留供未來使用。
Virtual
如果調試程式透過回溯產生此堆疊框架,此值會設定為 TRUE 。 否則,如果值是從線程的目前內容形成,則為 FALSE 。 一般而言,這適用於堆疊頂端的框架,其中 InstructionOffset 是目前的指令指標。
FrameNumber
框架的索引。 此索引會計算呼叫堆疊頂端的框架數目。 堆疊頂端的框架,代表目前呼叫的框架具有索引零。
規格需求
需求 | 值 |
---|---|
標頭 | dbgeng.h (包含 DbgEng.h) |