Sdílet prostřednictvím


DkmCustomInstructionSymbol Třída

Definice

DkmCustomInstructionSymbol se používá k reprezentaci spustitelného příkazu v libovolném typu vlastního prostředí runtime.

public ref class DkmCustomInstructionSymbol : Microsoft::VisualStudio::Debugger::Symbols::DkmInstructionSymbol
[Windows::Foundation::Metadata::WebHostHidden]
public ref class DkmCustomInstructionSymbol : Microsoft::VisualStudio::Debugger::Symbols::DkmInstructionSymbol
[Windows::Foundation::Metadata::WebHostHidden]
class DkmCustomInstructionSymbol : Microsoft::VisualStudio::Debugger::Symbols::DkmInstructionSymbol
[System.Runtime.InteropServices.Guid("c154cde9-82a7-6e6f-f4f4-8dbb776da068")]
public class DkmCustomInstructionSymbol : Microsoft.VisualStudio.Debugger.Symbols.DkmInstructionSymbol
[<System.Runtime.InteropServices.Guid("c154cde9-82a7-6e6f-f4f4-8dbb776da068")>]
type DkmCustomInstructionSymbol = class
    inherit DkmInstructionSymbol
Public Class DkmCustomInstructionSymbol
Inherits DkmInstructionSymbol
Dědičnost
DkmCustomInstructionSymbol
Atributy

Vlastnosti

AdditionalData

[Volitelné] Další data specifická pro modul runtime přidružená k adrese. Tato data nebudou použita při porovnávání adres.

EntityId

[Volitelné] Jedná se o datovou strukturu specifickou pro modul runtime, kterou mohou vlastní moduly runtime použít k uložení umístění této instrukce. Spolu s posunem se toto pole použije k porovnání dvou instrukcí ze stejného modulu.

Module

DkmModule Třída představuje sadu kódu (např. dll nebo exe), která je nebo jednou byla načtena do jednoho nebo více procesů. DkmModule Třída je centrálním objektem rozhraní API symbolů a je 1:1 s zápisem obslužné rutiny symbolu, který je načten. 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 symbolů si myslí, že jsou všechny tyto procesy identické, bude existovat pouze jeden objekt modulu.

(Zděděno od DkmInstructionSymbol)
Offset

Spolu s 'EntityId' pole 'Offset' slouží k jedinečné identifikaci instrukce. Může obsahovat hodnotu ukazatele (například ukazatel na pokyn) nebo posun od začátku funkce nebo 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 určuje, který modul runtime získá první výstřel 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.

(Zděděno od DkmInstructionSymbol)
TagValue

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

(Zděděno od DkmInstructionSymbol)

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.

(Zděděno od DkmInstructionSymbol)
Create(DkmModule, Guid, ReadOnlyCollection<Byte>, UInt64, ReadOnlyCollection<Byte>)

Create novou instanci objektu DkmCustomInstructionSymbol.

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

(Zděděno od DkmInstructionSymbol)
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).

(Zděděno od DkmInstructionSymbol)
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.

(Zděděno od DkmInstructionSymbol)
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).

(Zděděno od DkmInstructionSymbol)
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).

(Zděděno od DkmInstructionSymbol)
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).

(Zděděno od DkmInstructionSymbol)
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).

(Zděděno od DkmInstructionSymbol)
GetGPUInstructionMetadataCallback(DkmInstructionAddress, DkmInstructionSymbol)

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

(Zděděno od DkmInstructionSymbol)
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).

(Zděděno od DkmInstructionSymbol)
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).

(Zděděno od DkmInstructionSymbol)
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).

(Zděděno od DkmInstructionSymbol)
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).

(Zděděno od DkmInstructionSymbol)
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í.

(Zděděno od DkmInstructionSymbol)
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).

(Zděděno od DkmInstructionSymbol)
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).

(Zděděno od DkmInstructionSymbol)
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).

(Zděděno od DkmInstructionSymbol)
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).

(Zděděno od DkmInstructionSymbol)
GetSteppingRanges(DkmSteppingRangeBoundary, Boolean)

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.

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

(Zděděno od DkmInstructionSymbol)
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ř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).

(Zděděno od DkmInstructionSymbol)
GetUserCodeSourcePositionCallback(DkmInspectionSession)

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 nebo není v uživatelském kódu, vrátí se null (E_INSTRUCTION_NO_SOURCE návratový kód).

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

(Zděděno od DkmInstructionSymbol)
GetUserCodeSourcePositionCallback(DkmWorkList, DkmInspectionSession, DkmCompletionRoutine<DkmGetUserCodeSourcePositionCallbackAsyncResult>)

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 nebo není v uživatelském kódu, vrátí se null (E_INSTRUCTION_NO_SOURCE návratový kód).

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

(Zděděno od DkmInstructionSymbol)
HasEmbeddedDocument()

Testuje, jestli daný symbol obsahuje vložený dokument. Vložené dokumenty jsou, když je zdrojový soubor (např. main.cs) vložený do souboru symbolů (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).

(Zděděno od DkmInstructionSymbol)
HasLineInfo()

Dotazuje se poskytovatele symbolů, aby zjistil, jestli máme informace o řádku. Používá se monitorování ladění 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 lze volat z libovolné komponenty. Dynamické symboly lze volat pouze na straně serveru.

(Zděděno od DkmInstructionSymbol)
HasLineInfo(DkmWorkList, DkmCompletionRoutine<DkmHasLineInfoAsyncResult>)

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

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í: Pro běžné symboly lze volat z libovolné komponenty. Dynamické symboly lze volat pouze na straně serveru.

(Zděděno od DkmInstructionSymbol)
IsHiddenCode(DkmWorkList, DkmInspectionSession, DkmInstructionAddress, DkmCompletionRoutine<DkmIsHiddenCodeAsyncResult>)

Vrátí hodnotu, 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ř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).

(Zděděno od DkmInstructionSymbol)

Platí pro