Freigeben über


DEBUG_STACK_FRAME Struktur (dbgeng.h)

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

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;

Angehörige

InstructionOffset

Die Position im virtuellen Adressraum des Prozesses der zugehörigen Anweisung für den Stapelframe. Dies ist in der Regel die Absenderadresse für den nächsten Stapelframe oder der aktuelle Anweisungszeiger, wenn sich der Frame oben im Stapel befindet.

ReturnOffset

Die Position im virtuellen Adressraum des Prozesses der Absenderadresse für den Stapelframe. Dies ist in der Regel die zugehörige Anweisung für den vorherigen Stapelframe.

FrameOffset

Die Position im virtuellen Adressraum des Prozesses im Stapelframe, falls bekannt. Einige Prozessorarchitekturen verfügen nicht über einen Frame oder über mehrere. In diesen Fällen wählt das Modul 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

Die Position im virtuellen Adressraum des Ziels des Funktionseintrags für diesen Frame, falls verfügbar. Wenn dieser Zeiger festgelegt ist, bleibt dieser Zeiger nicht auf unbestimmte Zeit gültig und sollte nicht für die zukünftige Verwendung gehalten werden. Speichern Sie stattdessen den Wert InstructionOffset-, und verwenden Sie ihn mit IDebugSymbols3::GetFunctionEntryByOffset, um Funktionseingabeinformationen später abzurufen.

Params[4]

Die Werte der ersten vier Stapelplätze, die ggf. an die Funktion übergeben werden. Wenn weniger als vier Argumente vorhanden sind, werden die verbleibenden Einträge auf Null festgelegt. Diese Stapelplätze sind nicht garantiert, parameterwerte zu enthalten. Einige Aufrufkonventionen und Compileroptimierungen beeinträchtigen möglicherweise die Identifizierung von Parameterinformationen. Verwenden Sie IDebugSymbols::GetScopeSymbolGroup, um die tatsächlichen Parametersymbole abzurufen, um detailliertere Argumentinformationen und die richtige Positionsbehandlung zu erhalten.

Reserved[6]

Reserviert für die zukünftige Verwendung.

Virtual

Der Wert wird auf TRUE- festgelegt, wenn dieser Stapelframe vom Debugger durch Entspannen 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, hat index 0.

Anforderungen

Anforderung Wert
Header- dbgeng.h (include DbgEng.h)