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