Sdílet prostřednictvím


DkmClrNcInstructionAddress Třída

Definice

DkmClrNcInstructionAddress slouží k reprezentaci adres v nativním kódu CLR. Obsahuje informace o tom, kde instrukce používá spravované koncepty (DkmClrNcModuleInstance, token metody, posun IL) a nativní koncepty (DkmClrNcContainerModuleInstance, RVA).

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

public ref class DkmClrNcInstructionAddress : Microsoft::VisualStudio::Debugger::Clr::DkmClrInstructionAddress
[Windows::Foundation::Metadata::WebHostHidden]
public ref class DkmClrNcInstructionAddress : Microsoft::VisualStudio::Debugger::Clr::DkmClrInstructionAddress
[Windows::Foundation::Metadata::WebHostHidden]
class DkmClrNcInstructionAddress : Microsoft::VisualStudio::Debugger::Clr::DkmClrInstructionAddress
[System.Runtime.InteropServices.Guid("377ece5a-e9ff-bb6a-1612-b5d9cc54755f")]
public class DkmClrNcInstructionAddress : Microsoft.VisualStudio.Debugger.Clr.DkmClrInstructionAddress
[<System.Runtime.InteropServices.Guid("377ece5a-e9ff-bb6a-1612-b5d9cc54755f")>]
type DkmClrNcInstructionAddress = class
    inherit DkmClrInstructionAddress
Public Class DkmClrNcInstructionAddress
Inherits DkmClrInstructionAddress
Dědičnost
Atributy

Vlastnosti

ContainerModule

Základní modul kontejneru (modul na disku), kde je tato adresa načtená. K symbolům (DkmModule) se přistupuje prostřednictvím tohoto modulu místo instance ModuleInstance.

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

CPUInstructionPart

[Volitelné] CPUInstructionPart poskytuje adresu, kterou bude procesor provádět. To je vždy k dispozici pro nativní instrukce. Může být k dispozici pro CLR nebo vlastní adresy v závislosti na tom, jak byl objekt adresy vytvořen.

(Zděděno od DkmInstructionAddress)
GenericParameters

[Volitelné] U obecných metod poskytuje každý obecný parametr signaturu TypeSpec ve formátu ECMA. U metod, které nejsou obecné, bude mít hodnotu null. U neslučovaných modulů je to relativní vzhledem k mapování (nebo sestavení pseudo IL).

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

ILOffset

ILOffset je index instrukce IL, kterou tato adresa představuje. Tato hodnota může být nastavena na UInt32.MaxValue pro instrukce, která je v rámci dané metody, ale není svázána s konkrétní instrukcí IL. Používá se pro nativní instrukce CLR, které se nemapuje na instrukci IL. (ICorDebugILFrame::GetIP označuje MAPPING_UNMAPPED_ADDRESS).

(Zděděno od DkmClrInstructionAddress)
MethodId

Pár verze/token pro tuto metodu.

(Zděděno od DkmClrInstructionAddress)
ModuleInstance

Spravovaný modul obsahující InstructionPointer.

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

NativeOffset

Pro standardní rozhraní .NET Framework je NativeOffset posun bajtů vzhledem k začátku metody, kde lze najít instrukce procesoru. Pro účely této hodnoty by metoda měla být považována za souvislý blok bajtů. Pokud metoda nebyla zkompilována za běhu nebo pokud se tato adresa používá k odkazování čistě na adresu IL, NativeOffset bude nastavena na UInt32.MaxValue.

Pro nativní moduly .NET Framework je tato hodnota RVA nativní instrukce v modulu.

(Zděděno od DkmClrInstructionAddress)
Process

DkmProcess představuje cílový proces, který se ladí. Ladicí program ladí procesy, takže se jedná o základní jednotku ladění. DkmProcess může představovat systémový proces nebo virtuální proces, například minidumps.

(Zděděno od DkmInstructionAddress)
ReferenceToken

[Volitelné] V sestavení s více moduly je MethodId.Token token metody přeložený na příslušný virtuální modul. Tento token je možné vyhledat v pseudo-sestavení.

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

RuntimeInstance

Představuje nativní zkompilovanou instanci CLR spuštěnou v cílovém procesu.

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

TagValue

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

(Zděděno od DkmInstructionAddress)

Metody

CompareTo(DkmInstructionAddress)

Porovná dvě adresy instrukce a vrátí hodnotu označující, zda je jedna menší než, rovna nebo větší než druhá. Adresy musí být ze stejného modulu.

(Zděděno od DkmInstructionAddress)
Create(DkmClrMethodId, UInt32, UInt32, DkmClrNcRuntimeInstance, DkmClrNcModuleInstance, DkmClrNcContainerModuleInstance, ReadOnlyCollection<Byte>, Int32, DkmInstructionAddress+CPUInstruction)

Create novou instanci objektu DkmClrNcInstructionAddress.

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

DecodeAsyncStateMachineAttribute()

Získá typ Async State Machine a token metody MoveNext na tento typ.

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

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

(Zděděno od DkmClrInstructionAddress)
GetCorFunction()

Poskytuje přímý přístup k objektu ICorDebugFunction, který vyhodnocovače výrazů nebo jiné komponenty mohou použít ke kontrole domény aplikace.

Vrácené rozhraní lze použít POUZE ke kontrole cílového procesu a NIKDY by se nemělo používat k řízení provádění (žádné krokování, žádné zarážky, žádné pokračování atd.). Tento postup se nepodporuje a bude mít za následek nedefinované chování.

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

(Zděděno od DkmClrInstructionAddress)
GetCurrentCPUAddress()

Přeloží DkmInstructionAddress na CPU InstructionAddress. Toto je reverzní mapování ResolveCPUInstructionAddress. Toto rozhraní API je aktuálně podporováno pouze objekty CLR DkmRuntimeInstance.

Omezení umístění: Toto rozhraní API by se obecně mělo volat na klientovi, ale je možné ho volat na serveru pro překlad adres CLR (ale ne nativní zkompilované).

(Zděděno od DkmInstructionAddress)
GetCurrentCPUAddress(DkmWorkList, DkmCompletionRoutine<DkmGetCurrentCPUAddressAsyncResult>)

Přeloží DkmInstructionAddress na CPU InstructionAddress. Toto je reverzní mapování ResolveCPUInstructionAddress. Toto rozhraní API je aktuálně podporováno pouze objekty CLR DkmRuntimeInstance.

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í: Toto rozhraní API by se obecně mělo volat na klientovi, ale je možné ho volat na serveru pro překlad adres CLR (ale ne nativní zkompilované).

(Zděděno od DkmInstructionAddress)
GetNativeCodeMap(DkmStackWalkFrame)

Poskytuje mapu způsobu kompilace této metody do nativního kódu.

(Zděděno od DkmClrInstructionAddress)
GetNonUserCodeMetadataFlags()

Získá stav kódu jiného než uživatele pro tuto adresu instrukce.

(Zděděno od DkmClrInstructionAddress)
GetNonUserCodeMetadataFlags(DkmWorkList, DkmCompletionRoutine<DkmGetNonUserCodeMetadataFlagsAsyncResult>)

Získá stav kódu jiného než uživatele pro tuto adresu 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í.

(Zděděno od DkmClrInstructionAddress)
GetSymbol()

Převeďte DkmInstructionAddress na DkmInstructionSymbol. Pokud DkmInstructionAddress není v modulu DkmModule, vrátí GetSymbol hodnotu null (S_FALSE v nativním kódu).

(Zděděno od DkmInstructionAddress)
IsInSameFunction(DkmInstructionAddress)

Porovná dvě instrukční adresy a určí, jestli jsou ve stejné funkci.

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

(Zděděno od DkmInstructionAddress)
IsUserCode(DkmWorkList, DkmCompletionRoutine<DkmIsUserCodeAsyncResult>)

Určuje, jestli je daná adresa instrukce uživatelským kódem.

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í: Poznámka: V sadě Visual Studio 2017 Update 8 byla služba CallDirection rozhraní API vytvořená jako obousměrná z normálního stavu a teď se dá volat z libovolné komponenty.

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

(Zděděno od DkmInstructionAddress)
IsUserCodeWithoutCheckingLineInfo()

Pomocná metoda implementovaná spravovaným dm a používaná shim EE k určení, jestli je metoda uživatelským kódem, zatímco procházíme asynchronní návratové zásobníky. Nebudeme chtít použít běžnou metodu IsUserCode(), protože tato metoda provede cestu k poskytovateli symbolů, aby se zjistilo, jestli jsou k dispozici informace o řádku. Abychom tomu předešli, použijeme tuto metodu k tomu, aby spravovaná dm řídila další kontroly. Když se potom překrytí EE vrátí k poskytovateli symbolů, poskytovatel symbolů zkontroluje informace o řádku. Tímto způsobem umožňuje vypočítat celý spravovaný návratový zásobník v jedné cestě na vzdálenou stranu, aniž by bylo nutné další chatování tam a zpět jen kvůli určení, zda rámce návratového zásobníku jsou uživatelským kódem.

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

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

(Zděděno od DkmClrInstructionAddress)

Platí pro