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