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。 通常,对于堆栈顶部的帧,TRUE,其中 InstructionOffset 是当前指令指针。

FrameNumber

帧的索引。 此索引计算调用堆栈顶部的帧数。 表示当前调用的堆栈顶部的帧具有索引零。

要求

要求 价值
标头 dbgeng.h (包括 DbgEng.h)