IDebugControl4::GetContextStackTrace-Methode (dbgeng.h)

Die GetContextStackTrace-Methode gibt die Frames am oberen Rand des Aufrufstapels zurück, beginnend mit einem beliebigen Registerkontext und gibt den rekonstruierten Registerkontext für jeden Stapelrahmen zurück.

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 Registerkontext für den oberen Stapel 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 sind, werden diese Informationen nicht zurückgegeben.

[in] FramesSize

Gibt die Anzahl der Elemente in den Arrayframes an.

[out, optional] FrameContexts

Erhält den rekonstruierte 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 KONTEXTstruktur 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 verwiesen wird. Die Anzahl der zurückgegebenen Stapelframes entspricht der Anzahl der zurückgegebenen Kontexte, und FrameContextsSize muss frameContextsEntrySize gleich FrameContextsEntrySize sein.

[in] FrameContextsEntrySize

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

[out, optional] FramesFilled

Empfängt die Anzahl der Frames, die in den Arrayframes und Kontexten 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.

Bemerkungen

Die Stapelverfolgung, die an Frames und FrameContexts zurückgegeben wurde, kann mithilfe von OutputContextStackTrace gedruckt werden.

Es ist üblich, dass Stapel-Entschärfungen nur eine Teilmenge der Register wiederherstellen. Zum Beispiel wird der Stapel nicht immer den veränderlichen Registerzustand wiederherstellen, da die veränderlichen Register ein Kratzregister sind und Code sie nicht beibehalten muss. Register, die nicht wiederhergestellt werden, werden als letzter Wert wiederhergestellt, sodass bei Verwendung des Registerzustands, der möglicherweise nicht durch eine Abwickelung wiederhergestellt werden kann, berücksichtigt werden sollte.

Anforderungen

   
Zielplattform Desktop
Header dbgeng.h (einschließlich Dbgeng.h, Ntddk.h)

Siehe auch

GetStackTrace

IDebugControl4

OutputContextStackTrace

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