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