Udostępnij za pośrednictwem


DkmInstructionSymbol Klasa

Definicja

DkmInstructionSymbol reprezentuje metodę w procesie docelowym.

Klasy pochodne: DkmClrInstructionSymbol, DkmClrNcInstructionSymbol, DkmCustomInstructionSymbol, DkmNativeInstructionSymbol, DkmScriptInstructionSymbol

public ref class DkmInstructionSymbol abstract
[Windows::Foundation::Metadata::WebHostHidden]
public ref class DkmInstructionSymbol abstract
[Windows::Foundation::Metadata::WebHostHidden]
class DkmInstructionSymbol abstract
[System.Runtime.InteropServices.Guid("c55d7b4d-246f-0e5a-e37e-c9d9f2d996c6")]
public abstract class DkmInstructionSymbol
[<System.Runtime.InteropServices.Guid("c55d7b4d-246f-0e5a-e37e-c9d9f2d996c6")>]
type DkmInstructionSymbol = class
Public MustInherit Class DkmInstructionSymbol
Dziedziczenie
DkmInstructionSymbol
Pochodne
Atrybuty

Właściwości

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.

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.

TagValue

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

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.

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

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

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.

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

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

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

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

GetGPUInstructionMetadataCallback(DkmInstructionAddress, DkmInstructionSymbol)

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

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

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

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

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

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.

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

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

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

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

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

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

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

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

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

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.

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.

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

Dotyczy