dbgeng.h) (DEBUG_STACK_FRAME_EX 结构
DEBUG_STACK_FRAME_EX 结构描述堆栈帧和堆栈帧的当前指令的地址。
语法
typedef struct _DEBUG_STACK_FRAME_EX {
ULONG64 InstructionOffset;
ULONG64 ReturnOffset;
ULONG64 FrameOffset;
ULONG64 StackOffset;
ULONG64 FuncTableEntry;
ULONG64 Params[4];
ULONG64 Reserved[6];
BOOL Virtual;
ULONG FrameNumber;
ULONG InlineFrameContext;
ULONG Reserved1;
} DEBUG_STACK_FRAME_EX, *PDEBUG_STACK_FRAME_EX;
成员
InstructionOffset
堆栈帧相关指令的进程虚拟地址空间中的位置。 这通常是下一个堆栈帧的返回地址,如果帧位于堆栈的顶部,则为当前指令指针。
ReturnOffset
堆栈帧的返回地址的进程虚拟地址空间中的位置。 这通常是上一个堆栈帧的相关指令。
FrameOffset
堆栈帧的进程虚拟地址空间中的位置(如果已知)。 某些处理器体系结构没有帧或具有多个帧。 在这些情况下,引擎为给定堆栈级别选择最具有代表性的值。
StackOffset
处理器堆栈的进程虚拟地址空间中的位置。
FuncTableEntry
此帧的函数条目的目标虚拟地址空间中的位置(如果可用)。 设置后,不保证此指针无限期保持有效,不应保留以供将来使用。 请改为保存 InstructionOffset 的值,并将其与 IDebugSymbols3::GetFunctionEntryByOffset 一起使用,以便稍后检索函数条目信息。
Params[4]
传递给函数的前四个堆栈槽的值(如果可用)。 如果参数少于四个,则其余条目设置为零。 不保证这些堆栈槽包含参数值。 某些调用约定和编译器优化可能会干扰参数信息的标识。 有关更详细的参数信息和正确位置处理,请使用 IDebugSymbols::GetScopeSymbolGroup 检索实际参数符号。
Reserved[6]
保留供将来使用。 设置为 NULL。
Virtual
如果此堆栈帧是由调试器通过展开生成的,则该值设置为 TRUE 。 否则,如果该值是从线程的当前上下文形成的,则该值为 FALSE 。 通常,对于堆栈顶部的帧,这是 TRUE ,其中 InstructionOffset 是当前指令指针。
FrameNumber
帧的索引。 此索引计算调用堆栈顶部的帧数。 堆栈顶部的帧(表示当前调用)的索引为零。
InlineFrameContext
内联框架上下文。
Reserved1
用于对齐目的。 设置为 0。
要求
要求 | 值 |
---|---|
Header | dbgeng.h (包括 DbgEng.h) |