DEBUG_STACK_FRAME-Struktur (dbgeng.h)

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

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;

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 oben im Stapel befindet.

ReturnOffset

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

Die Position im virtuellen Adressraum des Prozesses des Stapelrahmens, sofern bekannt. Einige Prozessorarchitekturen verfügen nicht über einen Frame oder mehr als einen. 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, bleibt dieser Zeiger nicht unbegrenzt gültig und sollte nicht für die zukünftige Verwendung verwendet werden. Speichern Sie stattdessen den Wert von InstructionOffset , und verwenden Sie ihn mit IDebugSymbols3::GetFunctionEntryByOffset , um später Funktionseintragsinformationen 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 verbleibenden Einträge auf 0 (null) festgelegt. Diese Stapelslots enthalten nicht garantiert Parameterwerte. Einige Aufrufkonventionen und Compileroptimierungen können die Identifizierung von Parameterinformationen beeinträchtigen. Um ausführlichere Argumentinformationen und die richtige Standortbehandlung zu erhalten, verwenden Sie IDebugSymbols::GetScopeSymbolGroup , um die tatsächlichen Parametersymbole abzurufen.

Reserved[6]

Für die zukünftige Verwendung reserviert.

Virtual

Der Wert wird auf TRUE festgelegt, wenn dieser Stapelrahmen vom Debugger durch Entladung generiert wurde. Andernfalls ist der Wert FALSE , wenn er aus dem aktuellen Kontext eines Threads gebildet wurde. In der Regel ist dies für den Frame oben im Stapel TRUE , wobei InstructionOffset der aktuelle Anweisungszeiger ist.

FrameNumber

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

Anforderungen

Anforderung Wert
Header dbgeng.h (dbgEng.h einschließen)