DkmInstructionSymbol Třída

Definice

DkmInstructionSymbol představuje metodu v cílovém procesu.

Odvozené třídy: 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
Dědičnost
DkmInstructionSymbol
Odvozené
Atributy

Vlastnosti

Module

Třída DkmModule představuje sadu kódu (např. dll nebo exe), která je nebo byla jednou načtena do jednoho nebo více procesů. Třída DkmModule je centrálním objektem rozhraní API symbolů a je 1:1 s notací obslužné rutiny symbolu, co je načteno. Pokud se sada kódu načte do tří různých procesů (nebo stejného procesu, ale se třemi různými základními adresami nebo třemi různými doménami aplikace), ale obslužná rutina symbolu si myslí, že jsou všechny stejné, bude existovat pouze jeden objekt modulu.

RuntimeType

ID modulu runtime identifikuje spouštěcí prostředí pro konkrétní část kódu. Dispečer používá ID modulu runtime k rozhodnutí, do kterého monitorování se má odeslat. Všimněte si, že pořadí IDENTIFIKÁTORů GUID modulu runtime je poněkud významné, protože to určuje, který modul runtime získá první snímek během rozhodčího řízení. Pokud tedy chcete deklarovat novou instanci modulu runtime, která je založená na modulu CLR, id modulu runtime by mělo být menší než DkmRuntimeId.Clr.

TagValue

DkmInstructionSymbol je abstraktní základní třída. Tento výčet označuje, které odvozené třídy je tento objekt instancí.

Metody

Bind(DkmModuleInstance)

Vytvoří vazbu symbolu instrukce na konkrétní instanci modulu. Instrukční symbol je připojený k DkmModule, nikoli k DkmModuleInstance, takže není vázán na konkrétní proces, doménu aplikace nebo základní adresu modulu.

GetAlternateSourcePosition(DkmSourcePositionFlags)

Vrátí alternativní pozici zdrojového souboru (např. example.cs, řádek 12) pro tento symbol instrukce. V současné době se používá ve scénářích mapování zdrojů k vrácení původního (nenamapovaného) zdrojového umístění. Toto rozhraní API bude volat uživatelské rozhraní ladicího programu v případech, kdy nelze najít primární umístění zdroje.

Omezení umístění: Rozhraní API se musí volat z komponenty IDE (úroveň > komponenty 100 000).

Toto rozhraní API bylo představeno v sadě Visual Studio 12 Update 3 (DkmApiVersion.VS12Update3).

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

Asynchronně vypočítá základní informace o symbolu pro daný DkmInstructionSymbol.

Tato metoda připojí novou pracovní položku k zadanému pracovnímu seznamu a vrátí se po připojení pracovní položky. Skutečné zpracování pracovní položky je asynchronní. Volající obdrží oznámení o dokončení žádosti prostřednictvím rutiny dokončení.

Omezení umístění: Rozhraní API se musí volat z komponenty IDE (úroveň > komponenty 100 000).

Toto rozhraní API bylo představeno v sadě Visual Studio 16 RTM (DkmApiVersion.VS16RTMPreview).

GetCompilerId(DkmInspectionSession)

Vrátí ID kompilátoru (LanguageId/VendorId) daného symbolu.

Pokud byl soubor PDB vytvořen kompilátorem, který používal ISymUnmanagedWriter, bude čtečka PDB schopna určit správnou hodnotu DkmCompilerId z páru LanguageId/VendorId předaného z ISymUnmanagedWriter.DefineDocument.

Pokud byl soubor PDB vytvořen kompilátorem, který nepoužíval ISymUnmanagedWriter, může být čtečka PDB schopna získat DkmCompilerId ze záznamů PDB S_COMPILE*. Aby to fungovalo, musí kompilátor nejprve vygenerovat záznam S_COMPILE* pro každou sestavu. Kompilátor musí správně vyplnit hodnotu výčtu jazyka a řetězec kompilátoru. Kompilátor by měl zajistit, aby byl řetězec kompilátoru dostatečně specifický pro výběr vyhodnocovače výrazů. doporučujeme zadat název společnosti. Po vygenerování dvojice Enum/Name by nastavení pro vyhodnocovač výrazů mělo zaregistrovat tento pár v ladicím programu. K tomu by měl vyhodnocovač výrazů nastavit tento klíč registru: %VSRegistryRoot%\Debugger\CodeView Compilers%CodeViewLanguageCode%:%CompilerName% a definovat VendorId/LanguageId.

GetCompilerId(DkmWorkList, DkmInspectionSession, DkmCompletionRoutine<DkmGetCompilerIdAsyncResult>)

Vrátí ID kompilátoru (LanguageId/VendorId) daného symbolu.

Pokud byl soubor PDB vytvořen kompilátorem, který používal ISymUnmanagedWriter, bude čtečka PDB schopna určit správnou hodnotu DkmCompilerId z páru LanguageId/VendorId předaného z ISymUnmanagedWriter.DefineDocument.

Pokud byl soubor PDB vytvořen kompilátorem, který nepoužíval ISymUnmanagedWriter, může být čtečka PDB schopna získat DkmCompilerId ze záznamů PDB S_COMPILE*. Aby to fungovalo, musí kompilátor nejprve vygenerovat záznam S_COMPILE* pro každou sestavu. Kompilátor musí správně vyplnit hodnotu výčtu jazyka a řetězec kompilátoru. Kompilátor by měl zajistit, aby byl řetězec kompilátoru dostatečně specifický pro výběr vyhodnocovače výrazů. doporučujeme zadat název společnosti. Po vygenerování dvojice Enum/Name by nastavení pro vyhodnocovač výrazů mělo zaregistrovat tento pár v ladicím programu. K tomu by měl vyhodnocovač výrazů nastavit tento klíč registru: %VSRegistryRoot%\Debugger\CodeView Compilers%CodeViewLanguageCode%:%CompilerName% a definovat VendorId/LanguageId.

Tato metoda připojí novou pracovní položku k zadanému pracovnímu seznamu a vrátí se po připojení pracovní položky. Skutečné zpracování pracovní položky je asynchronní. Volající obdrží oznámení o dokončení žádosti prostřednictvím rutiny dokončení.

Omezení umístění: Rozhraní API se musí volat z komponenty IDE (úroveň > komponenty 100 000).

Toto rozhraní API bylo představeno v sadě Visual Studio 16 RTM (DkmApiVersion.VS16RTMPreview).

GetCurrentStatementRange()

Tato metoda vrátí rozsah posunu il, který obsahuje aktuální posun IL, jak je uvedeno v instrukční adrese.

Omezení umístění: Rozhraní API se musí volat z komponenty Monitor (úroveň < komponenty 100 000).

GetDisassemblyLabel(DkmInspectionSession)

Vrátí název symbolu tak, jak by se měl zobrazit v okně demontáže. Kód Microsoft C++ je založen na názvu veřejného symbolu.

Omezení umístění: Rozhraní API se musí volat z komponenty IDE (úroveň > komponenty 100 000).

GetEmbeddedDocument()

Vrátí vložený dokument obsahující tento symbol. Pokud vložený dokument neexistuje, vrátí S_FALSE.

Omezení umístění: Rozhraní API se musí volat z komponenty IDE (úroveň > komponenty 100 000).

Toto rozhraní API bylo představeno v sadě Visual Studio 15 Update 5 (DkmApiVersion.VS15Update5).

GetGPUInstructionMetadataCallback(DkmInstructionAddress, DkmInstructionSymbol)

Tato metoda vrací informace o adrese do monitoru ladění GPU.

GetInlineFramesCount(DkmBasicSymbolInfoRequestFlags)

Vrátí počet vložených snímků v daném symbolu instrukce.

Omezení umístění: Rozhraní API se musí volat z komponenty IDE (úroveň > komponenty 100 000).

Toto rozhraní API bylo představeno v sadě Visual Studio 16 RTM (DkmApiVersion.VS16RTMPreview).

GetInlineFramesCount(DkmWorkList, DkmBasicSymbolInfoRequestFlags, DkmCompletionRoutine<DkmGetInlineFramesCountAsyncResult>)

Vrátí počet vložených snímků v daném symbolu instrukce.

Tato metoda připojí novou pracovní položku k zadanému pracovnímu seznamu a vrátí se po připojení pracovní položky. Skutečné zpracování pracovní položky je asynchronní. Volající obdrží oznámení o dokončení žádosti prostřednictvím rutiny dokončení.

Omezení umístění: Rozhraní API se musí volat z komponenty IDE (úroveň > komponenty 100 000).

Toto rozhraní API bylo představeno v sadě Visual Studio 16 RTM (DkmApiVersion.VS16RTMPreview).

GetInlineSourcePosition(DkmStackWalkFrame, Boolean)

Vrátí pozici zdrojového souboru (např. example.cs, řádek 12) tohoto instrukčního symbolu na zadaném čísle vloženého rámce. Pokud tento symbol instrukce není přidružený ke zdrojovému souboru, vrátí se null (S_FALSE v nativním kódu).

Omezení umístění: Rozhraní API se musí volat z komponenty IDE (úroveň > komponenty 100 000).

Toto rozhraní API bylo zavedeno v sadě Visual Studio 15 RTM (DkmApiVersion.VS15RTM).

GetInlineSourcePosition(DkmWorkList, DkmStackWalkFrame, DkmCompletionRoutine<DkmGetInlineSourcePositionAsyncResult>)

Vrátí pozici zdrojového souboru (např. example.cs, řádek 12) tohoto instrukčního symbolu na zadaném čísle vloženého rámce. Pokud tento symbol instrukce není přidružený ke zdrojovému souboru, vrátí se null (S_FALSE v nativním kódu).

Tato metoda připojí novou pracovní položku k zadanému pracovnímu seznamu a vrátí se po připojení pracovní položky. Skutečné zpracování pracovní položky je asynchronní. Volající obdrží oznámení o dokončení žádosti prostřednictvím rutiny dokončení.

Omezení umístění: Rozhraní API se musí volat z komponenty IDE (úroveň > komponenty 100 000).

Toto rozhraní API bylo zavedeno v sadě Visual Studio 15 RTM (DkmApiVersion.VS15RTM).

GetNoSourceRanges()

Dotazuje se na poskytovatele symbolů, aby určil rozsahy instrukcí, které neodpovídají žádným příkazům zdroje uživatele a jsou používány základním monitorováním ladění, aby vždy krokoval během krokování.

GetSourcePosition(DkmSourcePositionFlags, DkmInspectionSession, Boolean)

Vrátí pozici zdrojového souboru (např. example.cs, řádek 12) tohoto symbolu instrukce. Pokud tento symbol instrukce není přidružený ke zdrojovému souboru, vrátí se null (S_FALSE v nativním kódu).

Omezení umístění: Rozhraní API se musí volat z komponenty IDE (úroveň > komponenty 100 000).

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

Vrátí pozici zdrojového souboru (např. example.cs, řádek 12) tohoto symbolu instrukce. Pokud tento symbol instrukce není přidružený ke zdrojovému souboru, vrátí se null (S_FALSE v nativním kódu).

Tato metoda připojí novou pracovní položku k zadanému pracovnímu seznamu a vrátí se po připojení pracovní položky. Skutečné zpracování pracovní položky je asynchronní. Volající obdrží oznámení o dokončení žádosti prostřednictvím rutiny dokončení.

Omezení umístění: Rozhraní API se musí volat z komponenty IDE (úroveň > komponenty 100 000).

GetSourcePositionCallback(DkmSourcePositionFlags, DkmInspectionSession, Boolean)

Vrátí pozici zdrojového souboru (např. example.cs, řádek 12) tohoto symbolu instrukce. Pokud tento symbol instrukce není přidružený ke zdrojovému souboru, vrátí se null (S_FALSE v nativním kódu).

Omezení umístění: Rozhraní API se musí volat z komponenty Monitor (úroveň < komponenty 100 000).

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

Vrátí pozici zdrojového souboru (např. example.cs, řádek 12) tohoto symbolu instrukce. Pokud tento symbol instrukce není přidružený ke zdrojovému souboru, vrátí se null (S_FALSE v nativním kódu).

Tato metoda připojí novou pracovní položku k zadanému pracovnímu seznamu a vrátí se po připojení pracovní položky. Skutečné zpracování pracovní položky je asynchronní. Volající obdrží oznámení o dokončení žádosti prostřednictvím rutiny dokončení.

Omezení umístění: Rozhraní API se musí volat z komponenty Monitor (úroveň < komponenty 100 000).

GetSteppingRanges(DkmSteppingRangeBoundary, Boolean)

Dotazuje poskytovatele symbolů, aby určil rozsahy pokynů, kterými by měl základní monitorování ladění krokovat, aby implementovaly krok.

Omezení umístění: Rozhraní API se musí volat z komponenty monitoru (úroveň < komponenty 100 000).

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

Dotazuje se na poskytovatele symbolů a určí rozsahy instrukcí, kterými by měl základní monitorování ladění krokovat, aby implementovaly určitý krok.

Tato metoda přidá novou pracovní položku do zadaného pracovního seznamu a vrátí po připojení pracovní položky. Skutečné zpracování pracovní položky je asynchronní. Volající bude upozorněn, že žádost je dokončena prostřednictvím rutiny dokončení.

Omezení umístění: Rozhraní API se musí volat z komponenty monitoru (úroveň < komponenty 100 000).

GetUserCodeSourcePositionCallback(DkmInspectionSession)

Vrátí pozici zdrojového souboru (například example.cs, řádek 12) tohoto symbolu instrukce. Pokud tento symbol instrukce není přidružený ke zdrojovému souboru nebo není v uživatelském kódu, vrátí se hodnota null (E_INSTRUCTION_NO_SOURCE návratový kód).

Omezení umístění: Rozhraní API se musí volat z komponenty monitoru (úroveň < komponenty 100 000).

GetUserCodeSourcePositionCallback(DkmWorkList, DkmInspectionSession, DkmCompletionRoutine<DkmGetUserCodeSourcePositionCallbackAsyncResult>)

Vrátí pozici zdrojového souboru (například example.cs, řádek 12) tohoto symbolu instrukce. Pokud tento symbol instrukce není přidružený ke zdrojovému souboru nebo není v uživatelském kódu, vrátí se hodnota null (E_INSTRUCTION_NO_SOURCE návratový kód).

Tato metoda přidá novou pracovní položku do zadaného pracovního seznamu a vrátí po připojení pracovní položky. Skutečné zpracování pracovní položky je asynchronní. Volající bude upozorněn, že žádost je dokončena prostřednictvím rutiny dokončení.

Omezení umístění: Rozhraní API se musí volat z komponenty monitoru (úroveň < komponenty 100 000).

HasEmbeddedDocument()

Testuje, jestli má daný symbol vložený dokument. Vložené dokumenty jsou, když je zdrojový soubor (např. main.cs) vložený do souboru symbolu (např. example.pdb).

Omezení umístění: Rozhraní API se musí volat z komponenty IDE (úroveň > komponenty 100 000).

Toto rozhraní API bylo zavedeno v sadě Visual Studio 15 Update 8 (DkmApiVersion.VS15Update8).

HasLineInfo()

Dotazuje poskytovatele symbolů, aby zjistil, jestli máme informace o řádku. Monitorování ladění se používá k rozhodování, jestli umístění může být považováno za uživatelský kód.

Omezení umístění: Pro běžné symboly je možné je volat z libovolné komponenty. Dynamické symboly lze volat pouze na straně serveru.

HasLineInfo(DkmWorkList, DkmCompletionRoutine<DkmHasLineInfoAsyncResult>)

Dotazuje poskytovatele symbolů, aby zjistil, jestli máme informace o řádku. Monitorování ladění se používá k rozhodování, jestli umístění může být považováno za uživatelský kód.

Tato metoda přidá novou pracovní položku do zadaného pracovního seznamu a vrátí po připojení pracovní položky. Skutečné zpracování pracovní položky je asynchronní. Volající bude upozorněn, že žádost je dokončena prostřednictvím rutiny dokončení.

Omezení umístění: Pro běžné symboly je možné je volat z libovolné komponenty. Dynamické symboly lze volat pouze na straně serveru.

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

Vrátí, pokud je tento symbol instrukce ve skrytém kódu. Například ve spravovaném kódu číslo řádku 0xfeefee označí zdrojový řádek jako skrytý.

Tato metoda přidá novou pracovní položku do zadaného pracovního seznamu a vrátí po připojení pracovní položky. Skutečné zpracování pracovní položky je asynchronní. Volající bude upozorněn, že žádost je dokončena prostřednictvím rutiny dokončení.

Omezení umístění: Rozhraní API se musí volat z komponenty IDE (úroveň > komponenty 100 000).

Platí pro