IDebugControl4::GetContextStackTrace-Methode (dbgeng.h)

Die GetContextStackTrace-Methode gibt die Frames am Anfang der Aufrufliste zurück, beginnend mit einem beliebigen Registerkontext und dem Rückgabe des rekonstruierten Registerkontexts für jeden Stapelrahmen.

Syntax

HRESULT GetContextStackTrace(
  [in, optional]  PVOID              StartContext,
  [in]            ULONG              StartContextSize,
  [out, optional] PDEBUG_STACK_FRAME 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 anfang 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 Speichers in Bytes an, auf den FrameContexts verweist. Die Anzahl der zurückgegebenen Stapelrahmen 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 OutputContextStackTrace gedruckt werden.

Es ist üblich, dass Stapelentladungen nur eine Teilmenge der Register wiederherstellen. Stapelentladungen stellen z. B. nicht immer den flüchtigen Registerzustand wieder her, da die flüchtigen Register Scratchregister sind und der Code sie nicht beibehalten muss. Register, die beim Entladungsvorgang nicht wiederhergestellt werden, bleiben als letzter Wiederhergestellter Wert erhalten. Daher sollte bei Verwendung des Registerzustands, der möglicherweise nicht durch eine Entladung wiederhergestellt wird, vorsichtsbeachtet werden.

Anforderungen

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

Weitere Informationen

GetStackTrace

IDebugControl4

OutputContextStackTrace

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