DEBUG_STACK_FRAME structure (dbgeng.h)

The DEBUG_STACK_FRAME structure describes a stack frame and the address of the current instruction for the stack frame.

Syntax

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;

Members

InstructionOffset

The location in the process's virtual address space of the related instruction for the stack frame. This is typically the return address for the next stack frame, or the current instruction pointer if the frame is at the top of the stack.

ReturnOffset

The location in the process's virtual address space of the return address for the stack frame. This is typically the related instruction for the previous stack frame.

FrameOffset

The location in the process's virtual address space of the stack frame, if known. Some processor architectures do not have a frame or have more than one. In these cases, the engine chooses a value most representative for the given level of the stack.

StackOffset

The location in the process's virtual address space of the processor stack.

FuncTableEntry

The location in the target's virtual address space of the function entry for this frame, if available. When set, this pointer is not guaranteed to remain valid indefinitely and should not be held for future use. Instead, save the value of InstructionOffset and use it with IDebugSymbols3::GetFunctionEntryByOffset to retrieve function entry information later.

Params[4]

The values of the first four stack slots that are passed to the function, if available. If there are less than four arguments, the remaining entries are set to zero. These stack slots are not guaranteed to contain parameter values. Some calling conventions and compiler optimizations might interfere with identification of parameter information. For more detailed argument information and proper location handling, use IDebugSymbols::GetScopeSymbolGroup to retrieve the actual parameter symbols.

Reserved[6]

Reserved for future use.

Virtual

The value is set to TRUE if this stack frame was generated by the debugger by unwinding. Otherwise, the value is FALSE if it was formed from a thread's current context. Typically, this is TRUE for the frame at the top of the stack, where InstructionOffset is the current instruction pointer.

FrameNumber

The index of the frame. This index counts the number of frames from the top of the call stack. The frame at the top of the stack, representing the current call, has index zero.

Requirements

Requirement Value
Header dbgeng.h (include DbgEng.h)