Udostępnij za pośrednictwem


DkmClrInstructionAddress Klasa

Definicja

DkmClrInstructionAddress jest używany do adresów w kodzie zarządzanym.

Klasy pochodne: 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
Dziedziczenie
DkmClrInstructionAddress
Pochodne
Atrybuty

Właściwości

CPUInstructionPart

[Opcjonalnie] Procesor CPUInstructionPart udostępnia adres, który będzie wykonywany przez procesor. Jest to zawsze dostępne dla instrukcji natywnych. Można go podać dla środowiska CLR lub adresów niestandardowych w zależności od sposobu tworzenia obiektu adresu.

(Odziedziczone po DkmInstructionAddress)
ILOffset

ILOffset jest indeksem instrukcji IL, którą reprezentuje ten adres. Ta wartość może być ustawiona na wartość UInt32.MaxValue dla instrukcji znajdującej się w danej metodzie, ale nie jest powiązana z określoną instrukcją IL. Jest to używane w przypadku instrukcji natywnych CLR, które nie są mapowe na instrukcje IL. (ICorDebugILFrame::GetIP wskazuje MAPPING_UNMAPPED_ADDRESS).

MethodId

Para wersji/tokenu dla tej metody.

ModuleInstance

Moduł zawierający instrukcję Programu .

NativeOffset

W przypadku standardowego .NET Framework nativeOffset jest przesunięciem bajtów względem początku metody, w której można znaleźć instrukcję procesora CPU. Na potrzeby tej wartości metoda powinna być traktowana jako ciągły blok bajtów. Jeśli metoda nie została skompilowana tylko w czasie lub jeśli ten adres jest używany do odwoływania się wyłącznie do adresu IL, właściwość NativeOffset zostanie ustawiona na wartość UInt32.MaxValue.

W przypadku modułów .NET Framework skompilowanych natywnych ta wartość to RVA instrukcji natywnej w module.

Process

DkmProcess reprezentuje proces docelowy, który jest debugowany. Debuger debuguje procesy, więc jest to podstawowa jednostka debugowania. Proces DkmProcess może reprezentować proces systemowy lub proces wirtualny, taki jak minidumps.

(Odziedziczone po DkmInstructionAddress)
RuntimeInstance

Reprezentuje wystąpienie środowiska CLR uruchomione w procesie docelowym.

TagValue

DkmInstructionAddress jest abstrakcyjną klasą bazową. To wyliczenie wskazuje, której klasy pochodnej ten obiekt jest wystąpieniem.

(Odziedziczone po DkmInstructionAddress)

Metody

CompareTo(DkmInstructionAddress)

Porównuje dwa adresy instrukcji i zwraca wartość wskazującą, czy jedna jest mniejsza niż, równa, czy większa niż druga. Adresy muszą pochodzić z tego samego modułu.

(Odziedziczone po DkmInstructionAddress)
Create(DkmClrRuntimeInstance, DkmClrModuleInstance, DkmClrMethodId, UInt32, UInt32, DkmInstructionAddress+CPUInstruction)

Twórca nowe wystąpienie obiektu DkmClrInstructionAddress.

DecodeAsyncStateMachineAttribute()

Uzyskuje typ maszyny stanu asynchronicznego i token metody metody MoveNext dla tego typu.

Ograniczenie lokalizacji: interfejs API musi być wywoływany ze składnika Monitor (poziom < składnika 100 000).

Ten interfejs API został wprowadzony w programie Visual Studio 17 RTM (DkmApiVersion.VS17RTM).

GetCorFunction()

Zapewnia bezpośredni dostęp do obiektu ICorDebugFunction, który ewaluatorzy wyrażeń lub inne składniki mogą służyć do inspekcji domeny aplikacji.

Zwrócony interfejs może być używany tylko do inspekcji procesu docelowego i nigdy nie powinien być używany do kontrolowania wykonywania (bez kroków, brak punktów przerwania, brak kontynuacji itp.). Wykonanie tej czynności nie jest obsługiwane i spowoduje niezdefiniowane zachowanie.

Ograniczenie lokalizacji: interfejs API musi być wywoływany ze składnika Monitor (poziom < składnika 100 000).

GetCurrentCPUAddress()

Rozwiązuje element DkmInstructionAddress do instrukcji procesora CPUAddress. Jest to odwrotne mapowanie polecenia ResolveCPUInstructionAddress. Ten interfejs API jest obecnie obsługiwany tylko przez obiekty CLR DkmRuntimeInstance.

Ograniczenie lokalizacji: ten interfejs API powinien być zwykle wywoływany na kliencie, ale można go wywołać na serwerze na potrzeby tłumaczenia adresów CLR (ale nie kompilowanego natywnie).

(Odziedziczone po DkmInstructionAddress)
GetCurrentCPUAddress(DkmWorkList, DkmCompletionRoutine<DkmGetCurrentCPUAddressAsyncResult>)

Rozwiązuje element DkmInstructionAddress do instrukcji procesora CPUAddress. Jest to odwrotne mapowanie polecenia ResolveCPUInstructionAddress. Ten interfejs API jest obecnie obsługiwany tylko przez obiekty CLR DkmRuntimeInstance.

Ta metoda dołączy nowy element roboczy do określonej listy roboczej i powróci po dołączeniu elementu roboczego. Rzeczywiste przetwarzanie elementu roboczego jest asynchroniczne. Obiekt wywołujący zostanie powiadomiony, że żądanie zostało ukończone przez procedurę ukończenia.

Ograniczenie lokalizacji: ten interfejs API powinien być zwykle wywoływany na kliencie, ale można go wywołać na serwerze na potrzeby tłumaczenia adresów CLR (ale nie kompilowanego natywnie).

(Odziedziczone po DkmInstructionAddress)
GetNativeCodeMap(DkmStackWalkFrame)

Zawiera mapę sposobu kompilowania tej metody do kodu natywnego.

GetNonUserCodeMetadataFlags()

Uzyskuje stan kodu innego niż użytkownik dla tego adresu instrukcji.

GetNonUserCodeMetadataFlags(DkmWorkList, DkmCompletionRoutine<DkmGetNonUserCodeMetadataFlagsAsyncResult>)

Uzyskuje stan kodu innego niż użytkownik dla tego adresu instrukcji.

Ta metoda dołączy nowy element roboczy do określonej listy roboczej i powróci po dołączeniu elementu roboczego. Rzeczywiste przetwarzanie elementu roboczego jest asynchroniczne. Obiekt wywołujący zostanie powiadomiony, że żądanie zostało ukończone przez procedurę ukończenia.

GetSymbol()

Przekonwertuj DkmInstructionAddress na DkmInstructionSymbol. Jeśli DkmInstructionAddress nie znajduje się w DkmModule, polecenie GetSymbol zwróci wartość null (S_FALSE w kodzie natywnym).

(Odziedziczone po DkmInstructionAddress)
IsInSameFunction(DkmInstructionAddress)

Porównuje dwa adresy instrukcji i określa, czy znajdują się one w tej samej funkcji.

Ograniczenie lokalizacji: interfejs API musi być wywoływany ze składnika IDE (poziom > składnika 100 000).

(Odziedziczone po DkmInstructionAddress)
IsUserCode(DkmWorkList, DkmCompletionRoutine<DkmIsUserCodeAsyncResult>)

Określa, czy dany adres instrukcji jest kodem użytkownika, czy nie.

Ta metoda dołączy nowy element roboczy do określonej listy roboczej i powróci po dołączeniu elementu roboczego. Rzeczywiste przetwarzanie elementu roboczego jest asynchroniczne. Obiekt wywołujący zostanie powiadomiony, że żądanie zostało ukończone przez procedurę ukończenia.

Ograniczenie lokalizacji: Uwaga: w programie Visual Studio 2017 Update 8 wywołanie interfejsu API zostało wykonane "Dwukierunkowe" z "Normalne" i można teraz wywoływać z dowolnego składnika.

Ten interfejs API został wprowadzony w programie Visual Studio 12 RTM (DkmApiVersion.VS12RTM).

(Odziedziczone po DkmInstructionAddress)
IsUserCodeWithoutCheckingLineInfo()

Metoda pomocnika zaimplementowana przez zarządzaną funkcję DM i używana przez podkładkę EE w celu określenia, czy metoda jest kodem użytkownika podczas chodzenia asynchronicznych stosów zwracanych. Nie chcemy używać regularnej metody IsUserCode(), ponieważ ta metoda wykonuje okrężną podróż do dostawcy symboli, aby sprawdzić, czy istnieją informacje o wierszu. Aby tego uniknąć, użyjemy tej metody, aby zarządzana strefa DM wykonywać inne kontrole. Następnie, gdy podkładka EE powróci do dostawcy symboli, dostawca symboli następnie sprawdzi informacje o wierszu. Dzięki temu cały zarządzany stos powrotu może być obliczany w jednej rundzie po stronie zdalnej, bez konieczności dodatkowego czatowania tam i z powrotem, aby określić, czy ramki stosu powrotnego są kodem użytkownika, czy nie.

Ograniczenie lokalizacji: interfejs API musi być wywoływany ze składnika Monitor (poziom < składnika 100 000).

Ten interfejs API został wprowadzony w programie Visual Studio 12 RTM (DkmApiVersion.VS12RTM).

Dotyczy