Debugging Tools for Windows

DEBUG_STACK_FRAME

The DEBUG_STACK_FRAME structure describes a stack frame and the address of the current instruction for the 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;

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
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
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

Headers: Defined in DbgEng.h. Include DbgEng.h.

Build machine: CAPEBUILD