Freigeben über


IDebugControl5::GetContextStackTraceEx-Methode (dbgeng.h)

Die GetContextStackTraceEx-Methode gibt die Frames am oberen Rand des Aufrufstapels zurück, beginnend mit einem beliebigen Registerkontext und zurückgeben den rekonstruierten Registerkontext für jeden Stapelrahmen. Die GetContextStackTraceEx-Methode bietet Inlineframeunterstützung. Weitere Informationen zum Arbeiten mit Inlinefunktionen finden Sie unter Debuggen von optimiertem Code und Inlinefunktionen.

Syntax

HRESULT GetContextStackTraceEx(
  [in, optional]  PVOID                 StartContext,
  [in]            ULONG                 StartContextSize,
  [out, optional] PDEBUG_STACK_FRAME_EX Frames,
  [in]            ULONG                 FramesSize,
  [out, optional] PVOID                 FrameContexts,
  [in]            ULONG                 FrameContextsSize,
  [in]            ULONG                 FrameContextsEntrySize,
  [out, optional] PULONG                FramesFilled
);

Parameter

[in, optional] StartContext

Gibt den Registrierungskontext für den oberen Rand des Stapels an.

[in] StartContextSize

Gibt die Größe des StartContext-Registerkontexts in Bytes an.

[out, optional] Frames

Empfängt die Stapelrahmen. Die Anzahl der Elemente, die dieses Array enthält, ist FrameSize. Wenn FramesNULL ist, werden diese Informationen nicht zurückgegeben.

[in] FramesSize

Gibt die Anzahl der Elemente in den Arrayframes an.

[out, optional] FrameContexts

Empfängt den rekonstruierten Registerkontext für jeden Frame im Stapel. Die Einträge in diesem Array entsprechen den Einträgen im Frames-Array . Der Typ des Threadkontexts ist die CONTEXT-Struktur für den effektiven Prozessor des Ziels. Wenn FrameContextsNULL ist, werden diese Informationen nicht zurückgegeben.

[in] FrameContextsSize

Gibt die Größe des Arbeitsspeichers in Bytes an, auf den frameContexts verweist. Die Anzahl der zurückgegebenen Stapelframes entspricht der Anzahl der zurückgegebenen Kontexte, und FrameContextsSize muss FramesSize mal FrameContextsEntrySize entsprechen.

[in] FrameContextsEntrySize

Gibt die Größe jedes Framekontexts in FrameContexts in Bytes an.

[out, optional] FramesFilled

Empfängt die Anzahl der Frames, die im Array Frames und Kontexte in FrameContexts platziert wurden. Wenn FramesFilledNULL ist, werden diese Informationen nicht zurückgegeben.

Rückgabewert

Rückgabecode BESCHREIBUNG
S_OK
Die Methode war erfolgreich.
 

Diese Methode kann auch Fehlerwerte zurückgeben. Weitere Informationen finden Sie unter Rückgabewerte.

Hinweise

Die an Frames und FrameContexts zurückgegebene Stapelablaufverfolgung kann mit OutputContextStackTraceEx gedruckt werden.

Es ist üblich, dass Stapelentladungen nur eine Teilmenge der Register wiederherstellen. Stapelentladungen stellen beispielsweise nicht immer den Zustand des flüchtigen Registers wieder her, da es sich bei den flüchtigen Registern um Scratchregister handelt und der Code sie nicht beibehalten muss. Register, die beim Entladen nicht wiederhergestellt werden, werden als letzter Wert wiederhergestellt. Daher sollte beim Verwenden des Registerzustands, der möglicherweise nicht durch einen Entladungsvorgang wiederhergestellt werden kann, Vorsicht gegeben werden.

Anforderungen

Anforderung Wert
Zielplattform Desktop
Kopfzeile dbgeng.h (einschließlich Dbgeng.h, Ntddk.h)

Weitere Informationen

GetStackTraceEx

IDebugControl5

OutputContextStackTraceEx

k, kb, kc, kd, kp, kP, kv (Display Stack Backtrace)