Freigeben über


IDebugControl5::GetContextStackTraceEx-Methode (dbgeng.h)

Die GetContextStackTraceEx-Methode gibt die Frames am oberen Rand des Aufrufstapels zurück, beginnend mit einem beliebigen Registrieren des Kontexts und Zurückgeben des rekonstruierbaren Registerkontexts für jeden Stapelframe. 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 Registerkontext für den oberen Rand des Stapels an.

[in] StartContextSize

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

[out, optional] Frames

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

[in] FramesSize

Gibt die Anzahl der Elemente im Array Frames-an.

[out, optional] FrameContexts

Empfängt den rekonstruierbaren 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 FrameContexts-NULL-ist, werden diese Informationen nicht zurückgegeben.

[in] FrameContextsSize

Gibt die Größe des Speichers in Bytes an, auf den FrameContextsverweist. Die Anzahl der zurückgegebenen Stapelframes entspricht der Anzahl der zurückgegebenen Kontexte, und FrameContextsSize- muss FramesSize Mal FrameContextsEntrySizeentsprechen.

[in] FrameContextsEntrySize

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

[out, optional] FramesFilled

Empfängt die Anzahl der Frames, die im Array Frames und Kontexten in FrameContexts-platziert wurden. Wenn FramesFilled-NULL-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.

Bemerkungen

Die Stapelablaufverfolgung, die an Frames zurückgegeben wurde, und FrameContexts- können mit OutputContextStackTraceExgedruckt werden.

Es ist üblich, dass Stapel sich entspannen, um nur eine Teilmenge der Register wiederherzustellen. Beispielsweise wird der veränderliche Registerzustand von Stapeln nicht immer wiederhergestellt, da die veränderliche Register Neuregister sind und Code sie nicht beibehalten muss. Register, die beim Entspannen nicht wiederhergestellt werden, bleiben erhalten, da der letzte Wert wiederhergestellt wird. Daher sollten Sie bei Verwendung des Registerzustands, der möglicherweise nicht durch eine Entspannung wiederhergestellt wird, vorsichtserwendbar sein.

Anforderungen

Anforderung Wert
Zielplattform- Desktop
Header- dbgeng.h (include Dbgeng.h, Ntddk.h)

Siehe auch

GetStackTraceEx-

IDebugControl5-

OutputContextStackTraceEx-

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