Share via


DkmStackWalkFrame Klasse

Definition

DkmStackWalkFrame stellt einen Frame auf einem Aufrufstapel dar, der gelaufen, aber möglicherweise nicht formatiert oder gefiltert wurde. Formatierte Frames werden stattdessen durch DkmStackFrame dargestellt.

Abgeleitete Klassen: DkmStackFrame

public ref class DkmStackWalkFrame
[Windows::Foundation::Metadata::WebHostHidden]
public ref class DkmStackWalkFrame
[Windows::Foundation::Metadata::WebHostHidden]
class DkmStackWalkFrame
[System.Runtime.InteropServices.Guid("48b55030-ecac-2387-4e63-bfdc3c172598")]
public class DkmStackWalkFrame
[<System.Runtime.InteropServices.Guid("48b55030-ecac-2387-4e63-bfdc3c172598")>]
type DkmStackWalkFrame = class
Public Class DkmStackWalkFrame
Vererbung
DkmStackWalkFrame
Abgeleitet
Attribute

Eigenschaften

AnnotatedModule

[Optional] Wenn wir über einen mit Anmerkungen versehenen Frame verfügen, gibt ein optionales Modul an, instance diesem Frame zugeordnet werden soll. Falls vorhanden, kann der Benutzer Binärdateien oder Symbole für dieses Modul laden, indem er im Aufruflistefenster mit der rechten Maustaste auf diesen Frame klickt. Dies ist NULL für nicht kommentierte Frames.

Diese API wurde in Visual Studio 12 RTM (DkmApiVersion.VS12RTM) eingeführt.

Annotations

[Optional] Eine schreibgeschützte Auflistung von Stapelrahmenanmerkungen. Diese werden durch einen Entladungser definiert und sind spezifisch für diesen Entladeer. Ein Beispiel für die Verwendung ist die Übergabe von Inlineframedaten vom Inlinestapelfilter an den Formatierer.

AsyncContext

[Optional] Optionaler Kontext zum Durchlaufen von asynchronen Rückgabestapeln und Aufgabenerstellungsstapeln.

Diese API wurde in Visual Studio 12 RTM (DkmApiVersion.VS12RTM) eingeführt.

BasicSymbolInfo

[Optional] Enthält grundlegende Informationen zum DkmInstructionSymbol, das der InstructionAddress des Frames entspricht. Bei nativen Frames wird dies vom StackProvider berechnet, bevor der Frame an einen Stapelfilter übergeben wird.

Dies ist für einen DkmStackFrame immer NULL.

Diese API wurde in Visual Studio 16 RTM (DkmApiVersion.VS16RTMPreview) eingeführt.

Connection

Dies stellt eine Verbindung zwischen dem Monitor und der IDE dar. Es kann entweder eine lokale Verbindung sein, wenn der Monitor im selben Prozess wie die IDE ausgeführt wird, oder es kann sich um eine Remoteverbindung handelt. Im Überwachungsprozess besteht nur eine Verbindung.

Data

[Optional] Optionales Objekt zum Anfügen an einen DkmStackWalkFrame, sodass Komponenten dem Frame zusätzliche private Daten zuordnen können.

Diese API wurde in Visual Studio 12 RTM (DkmApiVersion.VS12RTM) eingeführt.

Description

[Optional] Beschreibung des Frames, der im Aufruflistefenster angezeigt wird. Dies sollte für kommentierte Frames bereitgestellt werden.

Flags

Kennzeichnet Eigenschaften eines DkmStackWalkFrame.

FrameBase

Basisstapelzeiger des Frames. Dies wird vom SDM verwendet, um den Frame zu sortieren, und es wird von der Stapelzusammenführung verwendet, um den Schrittfortschritt zu bewerten, sodass dieser Wert auch für kommentierte Frames erforderlich ist. Dieser Wert sollte nur ungültig sein, wenn der Stapel des Debuggee beschädigt ist.

FrameSize

Anzahl der Bytes des Stapels, der von diesem Frame verwendet wird. Dieser Wert ist 0 (null) für kommentierte Frames oder , wenn der Wert unbekannt ist.

InstructionAddress

[Optional] Die Anweisung dieses Frames. Dies kann für kommentierte Frames weggelassen werden.

ModuleInstance

[Optional] Das Modul, das diese Adresse enthält. Adressen ohne Modul können keine Symbole aufweisen (auch nicht für benutzerdefinierte Adressen). CLR-Adressen verfügen immer über ein Modul. Native Adressen verfügen nicht über ein Modul, wenn die CPU entweder zu einer ungültigen Adresse gesprungen ist (z. B. NULL), oder wenn die CPU dynamisch ausgegebenen Code ausführt.

Priority

Die Priorität des Stapellaufrahmens. Dies wird in der Regel für kommentierte Frames verwendet, die ein Problem erkannt haben.

Diese API wurde in Visual Studio 17 Update 5 (DkmApiVersion.VS17Update5) eingeführt.

Process

DkmProcess stellt einen Zielprozess dar, der debuggt wird. Der Debugger debuggt Prozesse, sodass dies die grundlegende Debugeinheit ist. Ein DkmProcess kann einen Systemprozess oder einen virtuellen Prozess wie Minidumps darstellen.

Registers

[Optional] Register des begehbaren Rahmens. Diese sollten für nicht kommentierte Frames bereitgestellt werden.

RuntimeInstance

[Optional] Die DkmRuntimeInstance-Klasse stellt eine Ausführungsumgebung dar, die in einen DkmProcess geladen wird und den zu debuggenden Code enthält.

Thread

Der Thread, auf dem sich dieser Stapelrahmen befindet.

UniqueId

Ein eindeutiger Bezeichner für den DkmStackWalkFrame. In Remotedebugszenarien kann dies GUID_NULL/Guid.Empty sein, wenn der Frame von einem älteren IDE/Remotedebugger gemarshallt wurde.

Diese API wurde in Visual Studio 16 Update 10 (DkmApiVersion.VS16Update10) eingeführt.

Methoden

CanSetNextStatement(DkmInstructionAddress)

CanSetNextStatement bestimmt, ob die IP-Adresse eines Stapelrahmens verschoben werden kann. Der Stapelrahmen ist immer der Blattstapelrahmen auf einem bestimmten Thread. Diese API kann nur innerhalb des Engine-Prozesses implementiert werden. Der Result out-Parameter sollte S_OK oder der Wert eines fehlerhaften HRESULT-Ergebnisses sein, das die Benutzeroberfläche einer Fehlermeldung zuordnen kann.

Standorteinschränkung: Die API muss von einer IDE-Komponente (Komponentenebene > 100.000) aufgerufen werden.

ComputeUserStatus(DkmInspectionSession, Boolean)

Bestimmt, ob ein Frame Benutzercode ist.

Standorteinschränkung: Die API muss von einer IDE-Komponente (Komponentenebene > 100.000) aufgerufen werden.

Diese API wurde in Visual Studio 12 RTM (DkmApiVersion.VS12RTM) eingeführt.

Create(DkmThread, DkmInstructionAddress, UInt64, UInt32, DkmStackWalkFrameFlags, String, DkmFrameRegisters, ReadOnlyCollection<DkmStackWalkFrameAnnotation>)

Create ein neues DkmStackWalkFrame-Objekt instance.

Create(DkmThread, DkmInstructionAddress, UInt64, UInt32, DkmStackWalkFrameFlags, String, DkmFrameRegisters, ReadOnlyCollection<DkmStackWalkFrameAnnotation>, DkmModuleInstance, DkmAsyncStackWalkContext, DkmStackWalkFrameData)

Create ein neues DkmStackWalkFrame-Objekt instance.

Diese API wurde in Visual Studio 12 RTM (DkmApiVersion.VS12RTM) eingeführt.

Create(DkmThread, DkmInstructionAddress, UInt64, UInt32, DkmStackWalkFrameFlags, String, DkmFrameRegisters, ReadOnlyCollection<DkmStackWalkFrameAnnotation>, DkmModuleInstance, DkmAsyncStackWalkContext, DkmStackWalkFrameData, DkmBasicInstructionSymbolInfo)

Create ein neues DkmStackWalkFrame-Objekt instance.

Diese API wurde in Visual Studio 16 RTM (DkmApiVersion.VS16RTMPreview) eingeführt.

Create(DkmThread, DkmInstructionAddress, UInt64, UInt32, DkmStackWalkFrameFlags, String, DkmFrameRegisters, ReadOnlyCollection<DkmStackWalkFrameAnnotation>, DkmModuleInstance, DkmAsyncStackWalkContext, DkmStackWalkFrameData, DkmBasicInstructionSymbolInfo, DkmStackWalkFramePriority)

Create ein neues DkmStackWalkFrame-Objekt instance.

Diese API wurde in Visual Studio 17 Update 5 (DkmApiVersion.VS17Update5) eingeführt.

Format(DkmInspectionSession, DkmFrameFormatOptions)

Formatieren Sie einen DkmStackWalkFrame in einen DkmStackFrame. Das Formatieren eines Frames ist ein Schritt der Aktionen des Stapelanbieters während GetNextFrames. Diese Methode kann verwendet werden, um einen Frame anders zu formatieren, als dies ursprünglich vom Stapelanbieter in GetNextFrames ausgeführt wurde.

Standorteinschränkung: Die API muss von einer IDE-Komponente (Komponentenebene > 100.000) aufgerufen werden.

GetClrGenericParameters()

Ruft die generischen Parameter für den aktuellen Stapelrahmen als Liste von assemblyqualifizierten Namen ab.

Diese API wurde in Visual Studio 14 RTM (DkmApiVersion.VS14RTM) eingeführt.

GetClrGenericParameters(DkmWorkList, DkmCompletionRoutine<DkmGetClrGenericParametersAsyncResult>)

Ruft die generischen Parameter für den aktuellen Stapelrahmen als Liste von assemblyqualifizierten Namen ab.

Diese Methode fügt ein neues Arbeitselement an die angegebene Arbeitsliste an und gibt zurück, sobald das Arbeitselement angefügt wurde. Die tatsächliche Verarbeitung des Arbeitselements erfolgt asynchron. Der Aufrufer wird benachrichtigt, dass die Anforderung durch die Vervollständigungsroutine abgeschlossen ist.

Diese API wurde in Visual Studio 14 RTM (DkmApiVersion.VS14RTM) eingeführt.

GetInspectionInterface(DkmInspectionSession, Guid)

GetInspectionInterface wird verwendet, um einen ICorDebugFrame oder andere implementierungsspezifische Schnittstellen abzurufen, die eine Komponente verwenden kann, um den Stapelframe gründlich zu untersuchen.

Die zurückgegebene Schnittstelle kann NUR verwendet werden, um den Zielprozess zu überprüfen, und sollte NIE verwendet werden, um die Ausführung zu steuern (kein Schrittschritt, keine Haltepunkte, kein Fortsetzen usw.). Dies wird nicht unterstützt und führt zu undefiniertem Verhalten. HINWEIS: Die Verwendung dieser Methode aus verwaltetem Code wird aus Leistungsgründen nicht empfohlen. Das Marshallen von DkmStackWalkFrame zwischen nativem und verwaltetem Code ist teuer. Verwenden Sie stattdessen DkmRuntimeInstance.GetFrameInspectionInterface.

Standorteinschränkung: Diese API muss aus demselben Prozess aufgerufen werden, in dem die Zielruntime den Stapellauf implementiert oder in dem Symbole geladen werden. Für das verwaltete Debuggen bedeutet dies, dass diese API beim Debuggen von 64-Bit- oder Remoteprozessen von einer Debugmonitorkomponente aufgerufen werden muss.

GetInstructionSymbol()

Gibt ein DkmInstructionSymbol für einen Stapelrahmen zurück. Wenn der Stapelrahmen keine Anweisungsadresse (mit Anmerkungen) oder die Anweisungsadresse über kein zugeordnetes DkmModule verfügt, gibt GetInstructionSymbol NULL (S_FALSE im nativen Code) zurück.

GetProperty(ICorDebugValue, String)

Wertet eine Eigenschaft für die angegebene ICorDebugValue aus. Der Typ des Werts muss von der DkmClrAppDomain des DkmStackWalkFrame geladen werden, für den dieser $Name$ aufgerufen wird.

Standorteinschränkung: Dies muss auf der Remoteseite liegen, da wir eine ICorDebugHandleValue übergeben.

Diese API wurde in Visual Studio 15 Update 3 (DkmApiVersion.VS15Update3) eingeführt.

GetUnwindAddress(DkmInstructionAddress)

Gibt die Adresse zurück, die den Speicherort darstellt, wenn eine Ausnahme für diesen Frame abgefangen werden soll.

InterceptCurrentException(DkmExceptionInterceptActionFlags, UInt64)

InterceptCurrentException wird verwendet, um in diesen Frame zu entladen, als ob an diesem Frame ein Ausnahmehandler vorhanden wäre.

OnSetNextStatementCompleted(DkmInstructionAddress)

OnSetNextStatementCompleted ist eine universelle Methode, mit der Komponenten den Zustand löschen können, nachdem eine festgelegte nächste Anweisung abgeschlossen wurde. Der DkmStackWalkFrame ist der Frame vor dem SetNextStatement-Aufruf.

Standorteinschränkung: Diese API sollte im Allgemeinen nur von clientseitigen Komponenten aufgerufen werden. Es ist jedoch sicher, dass eine monitorseitige Komponente diese API aufruft, wenn die set next-Anweisung von einem Ereignishandler aufgerufen wird.

SetNextStatement(DkmInstructionAddress)

SetNextStatement verschiebt die IP-Adresse eines Stapelrahmens. Der Stapelrahmen ist immer der Blattstapelrahmen auf einem bestimmten Thread.

Gilt für: