Freigeben über


DEBUG_STACK_FRAME_EX-Struktur (dbgeng.h)

Die DEBUG_STACK_FRAME_EX-Struktur beschreibt einen Stapelrahmen und die Adresse der aktuellen Anweisung für den Stapelrahmen.

Syntax

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;

Member

InstructionOffset

Die Position im virtuellen Adressraum des Prozesses der zugehörigen Anweisung für den Stapelrahmen. Dies ist in der Regel die Rückgabeadresse für den nächsten Stapelrahmen oder der aktuelle Anweisungszeiger, wenn sich der Frame am oberen Rand des Stapels befindet.

ReturnOffset

Der Speicherort im virtuellen Adressraum des Prozesses der Rückgabeadresse für den Stapelrahmen. Dies ist in der Regel die zugehörige Anweisung für den vorherigen Stapelrahmen.

FrameOffset

Der Speicherort im virtuellen Adressraum des Prozesses des Stapelrahmens, sofern bekannt. Einige Prozessorarchitekturen verfügen nicht über einen Frame oder mehr als einen Frame. In diesen Fällen wählt die Engine einen Wert aus, der für die angegebene Ebene des Stapels am repräsentativsten ist.

StackOffset

Der Speicherort im virtuellen Adressraum des Prozesses des Prozessorstapels.

FuncTableEntry

Der Speicherort im virtuellen Adressraum des Ziels des Funktionseintrags für diesen Frame, sofern verfügbar. Wenn er festgelegt ist, ist nicht garantiert, dass dieser Zeiger unbegrenzt gültig bleibt und nicht für die zukünftige Verwendung verwendet werden sollte. Speichern Sie stattdessen den Wert von InstructionOffset , und verwenden Sie ihn mit IDebugSymbols3::GetFunctionEntryByOffset , um Funktionseintragsinformationen später abzurufen.

Params[4]

Die Werte der ersten vier Stapelslots, die an die Funktion übergeben werden, sofern verfügbar. Wenn weniger als vier Argumente vorhanden sind, werden die restlichen Einträge auf 0 festgelegt. Diese Stapelslots enthalten nicht garantiert Parameterwerte. Einige Aufrufkonventionen und Compileroptimierungen können die Identifizierung von Parameterinformationen beeinträchtigen. Für ausführlichere Argumentinformationen und die richtige Standortbehandlung verwenden Sie IDebugSymbols::GetScopeSymbolGroup , um die tatsächlichen Parametersymbole abzurufen.

Reserved[6]

Für die zukünftige Verwendung reserviert. Auf NULL festgelegt.

Virtual

Der Wert wird auf TRUE festgelegt, wenn dieser Stapelrahmen vom Debugger durch Entladen generiert wurde. Andernfalls ist der Wert FALSE , wenn er aus dem aktuellen Kontext eines Threads gebildet wurde. In der Regel ist dies true für den Frame am oberen Rand des Stapels, wobei InstructionOffset der aktuelle Anweisungszeiger ist.

FrameNumber

Der Index des Frames. Dieser Index zählt die Anzahl der Frames vom oberen Rand des Aufrufstapels. Der Frame am oberen Rand des Stapels, der den aktuellen Aufruf darstellt, weist index null auf.

InlineFrameContext

Inlineframekontext.

Reserved1

Wird für Ausrichtungszwecke verwendet. Auf 0 festlegen.

Anforderungen

Anforderung Wert
Header dbgeng.h (einschließlich DbgEng.h)