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)