Udostępnij za pośrednictwem


DkmCustomInstructionSymbol Klasa

Definicja

DkmCustomInstructionSymbol służy do reprezentowania instrukcji wykonywalnej w dowolnym typie niestandardowego środowiska uruchomieniowego.

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
Dziedziczenie
DkmCustomInstructionSymbol
Atrybuty

Właściwości

AdditionalData

[Opcjonalnie] Dodatkowe dane specyficzne dla środowiska uruchomieniowego skojarzone z adresem. Te dane nie będą używane podczas porównywania adresów.

EntityId

[Opcjonalnie] Jest to struktura danych specyficzna dla środowiska uruchomieniowego, której niestandardowe środowiska uruchomieniowe mogą używać do przechowywania lokalizacji tej instrukcji. Wraz z przesunięciem to pole będzie używane do porównywania dwóch instrukcji z tego samego modułu.

Module

Klasa DkmModule reprezentuje pakiet kodu (np. dll lub exe), który jest lub raz został załadowany do co najmniej jednego procesu. Klasa DkmModule jest centralnym obiektem interfejsów API symboli i jest 1:1 z notacją programu obsługi symboli tego, co jest ładowane. Jeśli pakiet kodu jest ładowany do trzech różnych procesów (lub tego samego procesu, ale z trzema różnymi adresami podstawowymi lub trzema różnymi domenami aplikacji), ale program obsługi symboli uważa wszystkie te procesy za identyczne, będzie tylko jeden obiekt modułu.

(Odziedziczone po DkmInstructionSymbol)
Offset

Wraz z "EntityId" pole "Przesunięcie" jest używane do unikatowej tożsamości instrukcji. Może to zawierać wartość wskaźnika (na przykład wskaźnik do instrukcji) lub przesunięcie od początku funkcji/modułu.

RuntimeType

Identyfikator środowiska uruchomieniowego identyfikuje środowisko wykonywania dla określonego fragmentu kodu. Identyfikatory środowiska uruchomieniowego są używane przez dyspozytora, aby zdecydować, do którego monitora ma być wysyłane. Należy pamiętać, że kolejność identyfikatora środowiska uruchomieniowego identyfikatora Guids jest nieco znacząca, ponieważ określa to, które środowisko uruchomieniowe pobiera pierwszy strzał podczas arbitrażu. W związku z tym, jeśli chcesz zadeklarować nowe wystąpienie środowiska uruchomieniowego, które jest zbudowane na clR, identyfikator środowiska uruchomieniowego powinien być mniejszy niż DkmRuntimeId.Clr.

(Odziedziczone po DkmInstructionSymbol)
TagValue

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

(Odziedziczone po DkmInstructionSymbol)

Metody

Bind(DkmModuleInstance)

Tworzy powiązanie symbolu instrukcji z określonym wystąpieniem modułu. Symbol instrukcji jest połączony z modułem DkmModule, a nie elementem DkmModuleInstance, więc nie jest powiązany z określonym procesem, domeną aplikacji lub adresem podstawowym modułu.

(Odziedziczone po DkmInstructionSymbol)
Create(DkmModule, Guid, ReadOnlyCollection<Byte>, UInt64, ReadOnlyCollection<Byte>)

Twórca nowego wystąpienia obiektu DkmCustomInstructionSymbol.

GetAlternateSourcePosition(DkmSourcePositionFlags)

Zwraca alternatywne położenie pliku źródłowego (np. example.cs, wiersz 12) dla tego symbolu instrukcji. Jest to obecnie używane w scenariuszach mapy źródłowej w celu zwrócenia oryginalnej (niezamapowanej) lokalizacji źródłowej. Ten interfejs API będzie wywoływany przez interfejs użytkownika debugera w przypadkach, gdy nie można odnaleźć podstawowej lokalizacji źródłowej.

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

Ten interfejs API został wprowadzony w programie Visual Studio 12 Update 3 (DkmApiVersion.VS12Update3).

(Odziedziczone po DkmInstructionSymbol)
GetBasicInfo(DkmWorkList, DkmModuleInstance, DkmBasicSymbolInfoRequestFlags, DkmCompletionRoutine<DkmGetBasicSymbolInfoAsyncResult>)

Asynchronicznie oblicza podstawowe informacje o symbolach dla danego DkmInstructionSymbol.

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: interfejs API musi być wywoływany ze składnika IDE (poziom > składnika 100 000).

Ten interfejs API został wprowadzony w programie Visual Studio 16 RTM (DkmApiVersion.VS16RTMPreview).

(Odziedziczone po DkmInstructionSymbol)
GetCompilerId(DkmInspectionSession)

Zwraca identyfikator kompilatora (LanguageId/VendorId) danego symbolu.

W przypadku czytnika plików PDB firmy Microsoft, jeśli plik PDB został utworzony przez kompilator, który używał elementu ISymUnmanagedWriter, czytnik PDB będzie mógł określić poprawną wartość DkmCompilerId z pary LanguageId/VendorId przekazanej z elementu ISymUnmanagedWriter.DefineDocument.

Jeśli plik PDB został utworzony przez kompilator, który nie używał elementu ISymUnmanagedWriter, czytnik pdB może być w stanie uzyskać identyfikator DkmCompilerId z rekordów pdB S_COMPILE* . Aby to zadziałało, kompilator musi najpierw emitować rekord S_COMPILE* dla każdego kompilatora. Kompilator musi mieć pewność, że poprawnie wypełni wartość wyliczenia języka i ciąg kompilatora. Kompilator powinien upewnić się, że ciąg kompilatora jest wystarczająco specyficzny dla wybierania ewaluatora wyrażeń; zaleca się dołączenie nazwy firmy. Po emisji pary wyliczenia/nazwy instalator ewaluatora wyrażeń powinien następnie zarejestrować tę parę z debugerem. W tym celu ewaluator wyrażeń powinien ustawić ten klucz rejestru: %VSRegistryRoot%\Debugger\CodeView Compilers%CodeViewLanguageCode%:%CompilerName% i zdefiniować identyfikator VendorId/LanguageId.

(Odziedziczone po DkmInstructionSymbol)
GetCompilerId(DkmWorkList, DkmInspectionSession, DkmCompletionRoutine<DkmGetCompilerIdAsyncResult>)

Zwraca identyfikator kompilatora (LanguageId/VendorId) danego symbolu.

W przypadku czytnika plików PDB firmy Microsoft, jeśli plik PDB został utworzony przez kompilator, który używał elementu ISymUnmanagedWriter, czytnik PDB będzie mógł określić poprawną wartość DkmCompilerId z pary LanguageId/VendorId przekazanej z elementu ISymUnmanagedWriter.DefineDocument.

Jeśli plik PDB został utworzony przez kompilator, który nie używał elementu ISymUnmanagedWriter, czytnik pdB może być w stanie uzyskać identyfikator DkmCompilerId z rekordów pdB S_COMPILE* . Aby to zadziałało, kompilator musi najpierw emitować rekord S_COMPILE* dla każdego kompilatora. Kompilator musi mieć pewność, że poprawnie wypełni wartość wyliczenia języka i ciąg kompilatora. Kompilator powinien upewnić się, że ciąg kompilatora jest wystarczająco specyficzny dla wybierania ewaluatora wyrażeń; zaleca się dołączenie nazwy firmy. Po emisji pary wyliczenia/nazwy instalator ewaluatora wyrażeń powinien następnie zarejestrować tę parę z debugerem. W tym celu ewaluator wyrażeń powinien ustawić ten klucz rejestru: %VSRegistryRoot%\Debugger\CodeView Compilers%CodeViewLanguageCode%:%CompilerName% i zdefiniować identyfikator VendorId/LanguageId.

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: interfejs API musi być wywoływany ze składnika IDE (poziom > składnika 100 000).

Ten interfejs API został wprowadzony w programie Visual Studio 16 RTM (DkmApiVersion.VS16RTMPreview).

(Odziedziczone po DkmInstructionSymbol)
GetCurrentStatementRange()

Ta metoda zwraca zakres przesunięcia IL, który zawiera bieżące przesunięcie IL określone w adresie instrukcji.

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

(Odziedziczone po DkmInstructionSymbol)
GetDisassemblyLabel(DkmInspectionSession)

Zwróć nazwę symbolu tak, jak powinien pojawić się w oknie demontażu. W przypadku kodu języka Microsoft C++ jest to oparte na nazwie publicznego symbolu.

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

(Odziedziczone po DkmInstructionSymbol)
GetEmbeddedDocument()

Zwraca osadzony dokument zawierający ten symbol. Zwraca S_FALSE, jeśli osadzony dokument nie istnieje.

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

Ten interfejs API został wprowadzony w programie Visual Studio 15 Update 5 (DkmApiVersion.VS15Update5).

(Odziedziczone po DkmInstructionSymbol)
GetGPUInstructionMetadataCallback(DkmInstructionAddress, DkmInstructionSymbol)

Ta metoda zwraca informacje o adresie do monitora debugowania procesora GPU.

(Odziedziczone po DkmInstructionSymbol)
GetInlineFramesCount(DkmBasicSymbolInfoRequestFlags)

Zwraca liczbę ramek wbudowanych w podanym symbolu instrukcji.

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

Ten interfejs API został wprowadzony w programie Visual Studio 16 RTM (DkmApiVersion.VS16RTMPreview).

(Odziedziczone po DkmInstructionSymbol)
GetInlineFramesCount(DkmWorkList, DkmBasicSymbolInfoRequestFlags, DkmCompletionRoutine<DkmGetInlineFramesCountAsyncResult>)

Zwraca liczbę ramek wbudowanych w podanym symbolu 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.

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

Ten interfejs API został wprowadzony w programie Visual Studio 16 RTM (DkmApiVersion.VS16RTMPreview).

(Odziedziczone po DkmInstructionSymbol)
GetInlineSourcePosition(DkmStackWalkFrame, Boolean)

Zwraca położenie pliku źródłowego (np. example.cs, wiersz 12) tego symbolu instrukcji na określonym numerze ramki wbudowanej. Jeśli ten symbol instrukcji nie jest skojarzony z plikiem źródłowym, zwracany jest wartość null (S_FALSE zwracany kod w języku natywnym).

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

Ten interfejs API został wprowadzony w programie Visual Studio 15 RTM (DkmApiVersion.VS15RTM).

(Odziedziczone po DkmInstructionSymbol)
GetInlineSourcePosition(DkmWorkList, DkmStackWalkFrame, DkmCompletionRoutine<DkmGetInlineSourcePositionAsyncResult>)

Zwraca położenie pliku źródłowego (np. example.cs, wiersz 12) tego symbolu instrukcji na określonym numerze ramki wbudowanej. Jeśli ten symbol instrukcji nie jest skojarzony z plikiem źródłowym, zwracany jest wartość null (S_FALSE zwracany kod w języku natywnym).

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: interfejs API musi być wywoływany ze składnika IDE (poziom > składnika 100 000).

Ten interfejs API został wprowadzony w programie Visual Studio 15 RTM (DkmApiVersion.VS15RTM).

(Odziedziczone po DkmInstructionSymbol)
GetNoSourceRanges()

Wysyła zapytanie do dostawcy symboli, aby określić zakresy instrukcji, które nie odpowiadają żadnym instrukcjom źródłowym użytkownika i są używane przez podstawowy monitor debugowania, aby zawsze przechodzić przez proces wykonywania kroków.

(Odziedziczone po DkmInstructionSymbol)
GetSourcePosition(DkmSourcePositionFlags, DkmInspectionSession, Boolean)

Zwraca położenie pliku źródłowego (np. example.cs, wiersz 12) tego symbolu instrukcji. Jeśli ten symbol instrukcji nie jest skojarzony z plikiem źródłowym, zwracany jest wartość null (S_FALSE zwracany kod w języku natywnym).

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

(Odziedziczone po DkmInstructionSymbol)
GetSourcePosition(DkmWorkList, DkmSourcePositionFlags, DkmInspectionSession, DkmCompletionRoutine<DkmGetSourcePositionAsyncResult>)

Zwraca położenie pliku źródłowego (np. example.cs, wiersz 12) tego symbolu instrukcji. Jeśli ten symbol instrukcji nie jest skojarzony z plikiem źródłowym, zwracany jest wartość null (S_FALSE zwracany kod w języku natywnym).

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: interfejs API musi być wywoływany ze składnika IDE (poziom > składnika 100 000).

(Odziedziczone po DkmInstructionSymbol)
GetSourcePositionCallback(DkmSourcePositionFlags, DkmInspectionSession, Boolean)

Zwraca położenie pliku źródłowego (np. example.cs, wiersz 12) tego symbolu instrukcji. Jeśli ten symbol instrukcji nie jest skojarzony z plikiem źródłowym, zwracany jest wartość null (S_FALSE zwracany kod w języku natywnym).

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

(Odziedziczone po DkmInstructionSymbol)
GetSourcePositionCallback(DkmWorkList, DkmSourcePositionFlags, DkmInspectionSession, DkmCompletionRoutine<DkmGetSourcePositionCallbackAsyncResult>)

Zwraca położenie pliku źródłowego (np. example.cs, wiersz 12) tego symbolu instrukcji. Jeśli ten symbol instrukcji nie jest skojarzony z plikiem źródłowym, zwracany jest wartość null (S_FALSE zwracany kod w języku natywnym).

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: interfejs API musi być wywoływany ze składnika Monitor (poziom < składnika 100 000).

(Odziedziczone po DkmInstructionSymbol)
GetSteppingRanges(DkmSteppingRangeBoundary, Boolean)

Wysyła zapytanie do dostawcy symboli, aby określić zakresy instrukcji, które podstawowy monitor debugowania powinien przejść do wdrożenia kroku.

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

(Odziedziczone po DkmInstructionSymbol)
GetSteppingRanges(DkmWorkList, DkmSteppingRangeBoundary, Boolean, DkmCompletionRoutine<DkmGetSteppingRangesAsyncResult>)

Wysyła zapytanie do dostawcy symboli, aby określić zakresy instrukcji, które podstawowy monitor debugowania powinien przejść do wdrożenia kroku.

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: interfejs API musi być wywoływany ze składnika Monitor (poziom < składnika 100 000).

(Odziedziczone po DkmInstructionSymbol)
GetUserCodeSourcePositionCallback(DkmInspectionSession)

Zwraca położenie pliku źródłowego (np. example.cs, wiersz 12) tego symbolu instrukcji. Jeśli ten symbol instrukcji nie jest skojarzony z plikiem źródłowym lub nie jest w kodzie użytkownika, zwracany jest wartość null (E_INSTRUCTION_NO_SOURCE zwracany kod).

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

(Odziedziczone po DkmInstructionSymbol)
GetUserCodeSourcePositionCallback(DkmWorkList, DkmInspectionSession, DkmCompletionRoutine<DkmGetUserCodeSourcePositionCallbackAsyncResult>)

Zwraca położenie pliku źródłowego (np. example.cs, wiersz 12) tego symbolu instrukcji. Jeśli ten symbol instrukcji nie jest skojarzony z plikiem źródłowym lub nie jest w kodzie użytkownika, zwracany jest wartość null (E_INSTRUCTION_NO_SOURCE zwracany kod).

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: interfejs API musi być wywoływany ze składnika Monitor (poziom < składnika 100 000).

(Odziedziczone po DkmInstructionSymbol)
HasEmbeddedDocument()

Sprawdza, czy dany symbol ma osadzony dokument. Dokumenty osadzone są wtedy, gdy plik źródłowy (np. main.cs) jest osadzony wewnątrz pliku symboli (np. example.pdb).

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

Ten interfejs API został wprowadzony w programie Visual Studio 15 Update 8 (DkmApiVersion.VS15Update8).

(Odziedziczone po DkmInstructionSymbol)
HasLineInfo()

Wysyła zapytanie do dostawcy symboli, aby określić, czy mamy informacje o wierszu. Służy do monitorowania debugowania, aby zdecydować, czy lokalizacja może być uznawana za kod użytkownika.

Ograniczenie lokalizacji: w przypadku zwykłych symboli można wywołać z dowolnego składnika. W przypadku symboli dynamicznych można wywołać tylko po stronie serwera.

(Odziedziczone po DkmInstructionSymbol)
HasLineInfo(DkmWorkList, DkmCompletionRoutine<DkmHasLineInfoAsyncResult>)

Wysyła zapytanie do dostawcy symboli, aby określić, czy mamy informacje o wierszu. Służy do monitorowania debugowania, aby zdecydować, czy lokalizacja może być uznawana za kod użytkownika.

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: w przypadku zwykłych symboli można wywołać z dowolnego składnika. W przypadku symboli dynamicznych można wywołać tylko po stronie serwera.

(Odziedziczone po DkmInstructionSymbol)
IsHiddenCode(DkmWorkList, DkmInspectionSession, DkmInstructionAddress, DkmCompletionRoutine<DkmIsHiddenCodeAsyncResult>)

Zwraca wartość , jeśli ten symbol instrukcji znajduje się w ukrytym kodzie. Na przykład w kodzie zarządzanym numer wiersza 0xfeefee oznacza linię źródłową jako ukrytą.

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: interfejs API musi być wywoływany ze składnika IDE (poziom > składnika 100 000).

(Odziedziczone po DkmInstructionSymbol)

Dotyczy