Freigeben über


DkmInstructionSymbol Klasse

Definition

DkmInstructionSymbol stellt eine Methode im Zielprozess dar.

Abgeleitete Klassen: DkmClrInstructionSymbol, DkmClrNcInstructionSymbol, DkmCustomInstructionSymbol, DkmNativeInstructionSymbol, DkmScriptInstructionSymbol

public ref class DkmInstructionSymbol abstract
[Windows::Foundation::Metadata::WebHostHidden]
public ref class DkmInstructionSymbol abstract
[Windows::Foundation::Metadata::WebHostHidden]
class DkmInstructionSymbol abstract
[System.Runtime.InteropServices.Guid("c55d7b4d-246f-0e5a-e37e-c9d9f2d996c6")]
public abstract class DkmInstructionSymbol
[<System.Runtime.InteropServices.Guid("c55d7b4d-246f-0e5a-e37e-c9d9f2d996c6")>]
type DkmInstructionSymbol = class
Public MustInherit Class DkmInstructionSymbol
Vererbung
DkmInstructionSymbol
Abgeleitet
Attribute

Eigenschaften

Module

Die DkmModule-Klasse stellt ein Codebündel (z. B. dll oder exe) dar, das oder einmal in einen oder mehrere Prozesse geladen wurde. Die DkmModule-Klasse ist das zentrale Objekt der Symbol-APIs und ist 1:1 mit der Notation des Geladenen durch den Symbolhandler. Wenn ein Codebündel in drei verschiedene Prozesse (oder denselben Prozess, aber mit drei verschiedenen Basisadressen oder drei verschiedenen App-Domänen) geladen wird, der Symbolhandler jedoch alle als identisch angibt, gibt es nur ein Modulobjekt.

RuntimeType

Die Laufzeit-ID identifiziert die Ausführungsumgebung für einen bestimmten Codeabschnitt. Laufzeit-IDs werden vom Dispatcher verwendet, um zu entscheiden, an welchen Monitor verteilt werden soll. Beachten Sie, dass die Reihenfolge der Laufzeit-ID-Guids etwas bedeutend ist, da dies vorschreibt, welche Runtime den ersten Schuss während des Schiedsverfahrens erhält. Wenn man also eine neue Runtime-instance deklarieren möchte, die auf der CLR basiert, sollte die Laufzeit-ID kleiner als DkmRuntimeId.Clr sein.

TagValue

DkmInstructionSymbol ist eine abstrakte Basisklasse. Diese Aufzählung gibt an, welche abgeleitete Klasse dieses Objekt instance ist.

Methoden

Bind(DkmModuleInstance)

Bindet ein Anweisungssymbol an ein bestimmtes Modul instance. Ein Anweisungssymbol ist mit einem DkmModule und nicht mit einer DkmModuleInstance verbunden, sodass es nicht an eine bestimmte Prozess-, App-Domäne- oder Modulbasisadresse gebunden ist.

GetAlternateSourcePosition(DkmSourcePositionFlags)

Gibt eine alternative Quelldateiposition (z. B. example.cs, Zeile 12) für dieses Anweisungssymbol zurück. Dies wird derzeit in Quellzuordnungsszenarien verwendet, um den ursprünglichen (nicht zugeordneten) Quellspeicherort zurückzugeben. Diese API wird von der Debugger-Benutzeroberfläche aufgerufen, wenn der primäre Quellspeicherort nicht gefunden werden kann.

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

Diese API wurde in Visual Studio 12 Update 3 (DkmApiVersion.VS12Update3) eingeführt.

GetBasicInfo(DkmWorkList, DkmModuleInstance, DkmBasicSymbolInfoRequestFlags, DkmCompletionRoutine<DkmGetBasicSymbolInfoAsyncResult>)

Berechnet asynchron grundlegende Symbolinformationen für ein bestimmtes DkmInstructionSymbol.

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.

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

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

GetCompilerId(DkmInspectionSession)

Gibt die Compiler-ID (LanguageId/VendorId) eines angegebenen Symbols zurück.

Wenn die PDB-Datei für den Microsoft PDB-Reader von einem Compiler erstellt wurde, der ISymUnmanagedWriter verwendet, kann der PDB-Reader die richtige DkmCompilerId aus dem LanguageId/VendorId-Paar ermitteln, das von ISymUnmanagedWriter.DefineDocument übergeben wurde.

Wenn der PDB von einem Compiler erstellt wurde, der ISymUnmanagedWriter nicht verwendet hat, kann der PDB-Reader die DkmCompilerId aus den S_COMPILE* PDB-Einträgen abrufen. Damit dies funktioniert, muss der Compiler zuerst den S_COMPILE*-Eintrag für jedes Compiland ausgeben. Der Compiler muss sicherstellen, dass er den Wert der Sprachenumeration und die Compilerzeichenfolge ordnungsgemäß ausfüllt. Der Compiler sollte sicherstellen, dass die Compilerzeichenfolge ausreichend spezifisch ist, um eine Ausdrucksauswertung auszuwählen. Es wird empfohlen, einen Firmennamen einzufügen. Nach dem Ausgeben des Enum/Name-Paars sollte das Setup für die Ausdrucksauswertung dieses Paar beim Debugger registrieren. Dazu sollte die Ausdrucksauswertung diesen Registrierungsschlüssel festlegen: %VSRegistryRoot%\Debugger\CodeView Compilers%CodeViewLanguageCode%:%CompilerName% und definieren Die VendorId/LanguageId.

GetCompilerId(DkmWorkList, DkmInspectionSession, DkmCompletionRoutine<DkmGetCompilerIdAsyncResult>)

Gibt die Compiler-ID (LanguageId/VendorId) eines angegebenen Symbols zurück.

Wenn die PDB-Datei für den Microsoft PDB-Reader von einem Compiler erstellt wurde, der ISymUnmanagedWriter verwendet, kann der PDB-Reader die richtige DkmCompilerId aus dem LanguageId/VendorId-Paar ermitteln, das von ISymUnmanagedWriter.DefineDocument übergeben wurde.

Wenn der PDB von einem Compiler erstellt wurde, der ISymUnmanagedWriter nicht verwendet hat, kann der PDB-Reader die DkmCompilerId aus den S_COMPILE* PDB-Einträgen abrufen. Damit dies funktioniert, muss der Compiler zuerst den S_COMPILE*-Eintrag für jedes Compiland ausgeben. Der Compiler muss sicherstellen, dass er den Wert der Sprachenumeration und die Compilerzeichenfolge ordnungsgemäß ausfüllt. Der Compiler sollte sicherstellen, dass die Compilerzeichenfolge ausreichend spezifisch ist, um eine Ausdrucksauswertung auszuwählen. Es wird empfohlen, einen Firmennamen einzufügen. Nach dem Ausgeben des Enum/Name-Paars sollte das Setup für die Ausdrucksauswertung dieses Paar beim Debugger registrieren. Dazu sollte die Ausdrucksauswertung diesen Registrierungsschlüssel festlegen: %VSRegistryRoot%\Debugger\CodeView Compilers%CodeViewLanguageCode%:%CompilerName% und definieren Die VendorId/LanguageId.

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.

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

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

GetCurrentStatementRange()

Diese Methode gibt den IL-Offsetbereich zurück, der den aktuellen IL-Offset enthält, wie in der Anweisungsadresse angegeben.

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

GetDisassemblyLabel(DkmInspectionSession)

Gibt den Namen des Symbols so zurück, wie es im Disassemblierungsfenster angezeigt werden soll. Für Microsoft C++-Code basiert dies auf dem öffentlichen Symbolnamen.

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

GetEmbeddedDocument()

Gibt das eingebettete Dokument zurück, das dieses Symbol enthält. Gibt S_FALSE zurück, wenn das eingebettete Dokument nicht vorhanden ist.

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

Diese API wurde in Visual Studio 15 Update 5 (DkmApiVersion.VS15Update5) eingeführt.

GetGPUInstructionMetadataCallback(DkmInstructionAddress, DkmInstructionSymbol)

Diese Methode gibt Adressinformationen an den GPU-Debugmonitor zurück.

GetInlineFramesCount(DkmBasicSymbolInfoRequestFlags)

Gibt die Anzahl der Inlineframes am angegebenen Anweisungssymbol zurück.

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

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

GetInlineFramesCount(DkmWorkList, DkmBasicSymbolInfoRequestFlags, DkmCompletionRoutine<DkmGetInlineFramesCountAsyncResult>)

Gibt die Anzahl der Inlineframes am angegebenen Anweisungssymbol zurück.

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.

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

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

GetInlineSourcePosition(DkmStackWalkFrame, Boolean)

Gibt die Quelldateiposition (z. B. example.cs, Zeile 12) dieses Anweisungssymbols an der angegebenen Inlineframenummer zurück. Wenn dieses Anweisungssymbol keiner Quelldatei zugeordnet ist, wird NULL zurückgegeben (S_FALSE Code in systemeigenem Code zurückgeben).

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

Diese API wurde in Visual Studio 15 RTM (DkmApiVersion.VS15RTM) eingeführt.

GetInlineSourcePosition(DkmWorkList, DkmStackWalkFrame, DkmCompletionRoutine<DkmGetInlineSourcePositionAsyncResult>)

Gibt die Quelldateiposition (z. B. example.cs, Zeile 12) dieses Anweisungssymbols an der angegebenen Inlineframenummer zurück. Wenn dieses Anweisungssymbol keiner Quelldatei zugeordnet ist, wird NULL zurückgegeben (S_FALSE Code in systemeigenem Code zurückgeben).

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.

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

Diese API wurde in Visual Studio 15 RTM (DkmApiVersion.VS15RTM) eingeführt.

GetNoSourceRanges()

Fragt den Symbolanbieter ab, um die Bereiche von Anweisungen zu bestimmen, die keine Benutzerquellenanweisungen entsprechen und vom Basisdebugmonitor verwendet werden, um beim Schrittweisen immer schrittweise durchzugehen.

GetSourcePosition(DkmSourcePositionFlags, DkmInspectionSession, Boolean)

Gibt die Quelldateiposition (z. B. example.cs, Zeile 12) dieses Anweisungssymbols zurück. Wenn dieses Anweisungssymbol keiner Quelldatei zugeordnet ist, wird NULL zurückgegeben (S_FALSE Code in systemeigenem Code zurückgeben).

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

GetSourcePosition(DkmWorkList, DkmSourcePositionFlags, DkmInspectionSession, DkmCompletionRoutine<DkmGetSourcePositionAsyncResult>)

Gibt die Quelldateiposition (z. B. example.cs, Zeile 12) dieses Anweisungssymbols zurück. Wenn dieses Anweisungssymbol keiner Quelldatei zugeordnet ist, wird NULL zurückgegeben (S_FALSE Code in systemeigenem Code zurückgeben).

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.

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

GetSourcePositionCallback(DkmSourcePositionFlags, DkmInspectionSession, Boolean)

Gibt die Quelldateiposition (z. B. example.cs, Zeile 12) dieses Anweisungssymbols zurück. Wenn dieses Anweisungssymbol keiner Quelldatei zugeordnet ist, wird NULL zurückgegeben (S_FALSE Code in systemeigenem Code zurückgeben).

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

GetSourcePositionCallback(DkmWorkList, DkmSourcePositionFlags, DkmInspectionSession, DkmCompletionRoutine<DkmGetSourcePositionCallbackAsyncResult>)

Gibt die Quelldateiposition (z. B. example.cs, Zeile 12) dieses Anweisungssymbols zurück. Wenn dieses Anweisungssymbol keiner Quelldatei zugeordnet ist, wird NULL zurückgegeben (S_FALSE Code in systemeigenem Code zurückgeben).

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.

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

GetSteppingRanges(DkmSteppingRangeBoundary, Boolean)

Fragt den Symbolanbieter ab, um die Anweisungen zu ermitteln, die der Basisdebugmonitor schrittweise durchlaufen soll, um einen Schritt zu implementieren.

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

GetSteppingRanges(DkmWorkList, DkmSteppingRangeBoundary, Boolean, DkmCompletionRoutine<DkmGetSteppingRangesAsyncResult>)

Fragt den Symbolanbieter ab, um die Bereiche von Anweisungen zu bestimmen, die der Basisdebugmonitor schrittweise durchlaufen soll, um einen Schritt zu implementieren.

Diese Methode fügt ein neues Arbeitselement an die angegebene Arbeitsliste an und gibt zurück, nachdem 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.

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

GetUserCodeSourcePositionCallback(DkmInspectionSession)

Gibt die Quelldateiposition (z. B. example.cs, Zeile 12) dieses Befehlssymbols zurück. Wenn dieses Anweisungssymbol keiner Quelldatei oder nicht im Benutzercode zugeordnet ist, wird NULL zurückgegeben (E_INSTRUCTION_NO_SOURCE Rückgabecode).

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

GetUserCodeSourcePositionCallback(DkmWorkList, DkmInspectionSession, DkmCompletionRoutine<DkmGetUserCodeSourcePositionCallbackAsyncResult>)

Gibt die Quelldateiposition (z. B. example.cs, Zeile 12) dieses Befehlssymbols zurück. Wenn dieses Anweisungssymbol keiner Quelldatei oder nicht im Benutzercode zugeordnet ist, wird NULL zurückgegeben (E_INSTRUCTION_NO_SOURCE Rückgabecode).

Diese Methode fügt ein neues Arbeitselement an die angegebene Arbeitsliste an und gibt zurück, nachdem 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.

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

HasEmbeddedDocument()

Testet, ob das angegebene Symbol über ein eingebettetes Dokument verfügt. Eingebettete Dokumente sind, wenn eine Quelldatei (z. B. Standard.cs) in die Symboldatei eingebettet ist (z. B. example.pdb).

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

Diese API wurde in Visual Studio 15 Update 8 (DkmApiVersion.VS15Update8) eingeführt.

HasLineInfo()

Fragt den Symbolanbieter ab, um zu ermitteln, ob zeilenspezifische Informationen vorhanden sind. Wird vom Debugmonitor verwendet, um zu entscheiden, ob der Speicherort als Benutzercode betrachtet werden kann.

Standorteinschränkung: Für gewöhnliche Symbole kann von jeder Komponente aufgerufen werden. Für dynamische Symbole kann nur auf der Serverseite aufgerufen werden.

HasLineInfo(DkmWorkList, DkmCompletionRoutine<DkmHasLineInfoAsyncResult>)

Fragt den Symbolanbieter ab, um zu ermitteln, ob zeilenspezifische Informationen vorhanden sind. Wird vom Debugmonitor verwendet, um zu entscheiden, ob der Speicherort als Benutzercode betrachtet werden kann.

Diese Methode fügt ein neues Arbeitselement an die angegebene Arbeitsliste an und gibt zurück, nachdem 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.

Standorteinschränkung: Für gewöhnliche Symbole kann von jeder Komponente aufgerufen werden. Für dynamische Symbole kann nur auf der Serverseite aufgerufen werden.

IsHiddenCode(DkmWorkList, DkmInspectionSession, DkmInstructionAddress, DkmCompletionRoutine<DkmIsHiddenCodeAsyncResult>)

Gibt zurück, wenn sich dieses Anweisungssymbol im ausgeblendeten Code befindet. Für instance markiert die Zeilennummer im verwalteten Code 0xfeefee eine Quellzeile als ausgeblendet.

Diese Methode fügt ein neues Arbeitselement an die angegebene Arbeitsliste an und gibt zurück, nachdem 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.

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

Gilt für: