DkmClrInstructionAddress Třída

Definice

DkmClrInstructionAddress se používá pro adresy ve spravovaném kódu.

Odvozené třídy: DkmClrNcInstructionAddress

public ref class DkmClrInstructionAddress : Microsoft::VisualStudio::Debugger::DkmInstructionAddress
[Windows::Foundation::Metadata::WebHostHidden]
public ref class DkmClrInstructionAddress : Microsoft::VisualStudio::Debugger::DkmInstructionAddress
[Windows::Foundation::Metadata::WebHostHidden]
class DkmClrInstructionAddress : Microsoft::VisualStudio::Debugger::DkmInstructionAddress
[System.Runtime.InteropServices.Guid("ef7a9773-03a1-0aab-55bb-ee6b870e6246")]
public class DkmClrInstructionAddress : Microsoft.VisualStudio.Debugger.DkmInstructionAddress
[<System.Runtime.InteropServices.Guid("ef7a9773-03a1-0aab-55bb-ee6b870e6246")>]
type DkmClrInstructionAddress = class
    inherit DkmInstructionAddress
Public Class DkmClrInstructionAddress
Inherits DkmInstructionAddress
Dědičnost
DkmClrInstructionAddress
Odvozené
Atributy

Vlastnosti

CPUInstructionPart

[Volitelné] CPUInstructionPart poskytuje adresu, kterou procesor spustí. To je vždy k dispozici pro nativní pokyny. 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)
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í vázána na konkrétní instrukce IL. Používá se pro nativní instrukce CLR, které se nemapuje na instrukce IL. (ICorDebugILFrame::GetIP označuje MAPPING_UNMAPPED_ADDRESS).

MethodId

Pár verze/token pro tuto metodu.

ModuleInstance

Modul obsahující InstructionPointer.

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 kompilová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í zkompilované moduly rozhraní .NET Framework je tato hodnota RVA nativní instrukce v modulu.

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

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

TagValue

DkmInstructionAddress je abstraktní základní třída. Tento výčet označuje, které odvozené třídy 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(DkmClrRuntimeInstance, DkmClrModuleInstance, DkmClrMethodId, UInt32, UInt32, DkmInstructionAddress+CPUInstruction)

Create novou instanci objektu DkmClrInstructionAddress.

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 monitoru (úroveň < komponenty 100 000).

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

GetCorFunction()

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

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

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

GetCurrentCPUAddress()

Přeloží DkmInstructionAddress na CPU InstructionAddress. Toto je obrácené 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 pro překlad adres CLR se dá volat na serveru (ale ne nativní zkompilované).

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

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

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

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

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

GetNonUserCodeMetadataFlags()

Získá stav jiného než uživatelského kódu pro tuto instrukční adresu.

GetNonUserCodeMetadataFlags(DkmWorkList, DkmCompletionRoutine<DkmGetNonUserCodeMetadataFlagsAsyncResult>)

Získá stav jiného než uživatelského kódu pro tuto instrukční adresu.

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

GetSymbol()

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

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

Porovná dvě adresy instrukce 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ř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í: Poznámka: V sadě Visual Studio 2017 Update 8 se z normálního nastavení vytvořilo obousměrné přesměrování rozhraní API 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á spravovanou dm a použitá 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 zpáteční cestu ke poskytovateli symbolů, abychom zjistili, jestli jsou k dispozici informace o řádku. Abychom tomu předešli, použijeme tuto metodu k tomu, aby spravovaná dm provedla další kontroly. Když se pak shim EE vrátí k poskytovateli symbolů, poskytovatel symbolu pak zkontroluje informace o řádku. Tímto způsobem můžete vypočítat celý spravovaný zásobník vrácení na jednu zpáteční cestu na vzdálenou stranu, aniž by bylo potřeba další chatování tam a zpět, jen abyste zjistili, jestli návratové rámce zásobníku jsou uživatelským kódem nebo ne.

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

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

Platí pro