Поделиться через


DkmNativeInstructionSymbol Класс

Определение

DkmNativeInstructionSymbol представляет собственную инструкцию в модуле целевого процесса. DkmNativeInstructionSymbol — это 1:1 с базовыми собственными инструкциями. Таким образом, если существует два экземпляра шаблона метода (например, MyMethod<CString> и MyMethod<int>), если компоновщик объединяет два экземпляра в одну функцию с помощью свертывания COMDAT, методы будут идентичными. Если компоновщик не может объединить два экземпляра, обе функции уровня пользователя будут отображаться как один DkmNativeInstructionSymbol.

public ref class DkmNativeInstructionSymbol : Microsoft::VisualStudio::Debugger::Symbols::DkmInstructionSymbol
[Windows::Foundation::Metadata::WebHostHidden]
public ref class DkmNativeInstructionSymbol : Microsoft::VisualStudio::Debugger::Symbols::DkmInstructionSymbol
[Windows::Foundation::Metadata::WebHostHidden]
class DkmNativeInstructionSymbol : Microsoft::VisualStudio::Debugger::Symbols::DkmInstructionSymbol
[System.Runtime.InteropServices.Guid("0eb834ca-c591-449c-66ad-e016093977d2")]
public class DkmNativeInstructionSymbol : Microsoft.VisualStudio.Debugger.Symbols.DkmInstructionSymbol
[<System.Runtime.InteropServices.Guid("0eb834ca-c591-449c-66ad-e016093977d2")>]
type DkmNativeInstructionSymbol = class
    inherit DkmInstructionSymbol
Public Class DkmNativeInstructionSymbol
Inherits DkmInstructionSymbol
Наследование
DkmNativeInstructionSymbol
Атрибуты

Свойства

Module

Класс DkmModule представляет пакет кода (например, dll или exe), который был загружен в один или несколько процессов или один раз. Класс DkmModule является центральным объектом API символов и имеет значение 1:1 с нотацией обработчика символов о том, что загружается. Если пакет кода загружается в три разных процесса (или один и тот же процесс, но с тремя разными базовыми адресами или тремя разными доменами приложения), но обработчик символов считает все эти процессы идентичными, будет только один объект модуля.

(Унаследовано от DkmInstructionSymbol)
RuntimeType

Идентификатор среды выполнения определяет среду выполнения для определенного фрагмента кода. Идентификаторы среды выполнения используются диспетчером для выбора монитора для отправки. Обратите внимание, что порядок идентификаторов GUID среды выполнения имеет некоторое значение, так как это определяет, какая среда выполнения получает первый снимок во время арбитража. Таким образом, если требуется объявить новый экземпляр среды выполнения, созданный на основе среды CLR, идентификатор среды выполнения должен быть меньше DkmRuntimeId.Clr.

(Унаследовано от DkmInstructionSymbol)
RVA

RVA элемента InstructionPointer в модуле.

TagValue

DkmInstructionSymbol является абстрактным базовым классом. Это перечисление указывает, какой производный класс является экземпляром этого объекта.

(Унаследовано от DkmInstructionSymbol)

Методы

Bind(DkmModuleInstance)

Привязывает символ инструкции к конкретному экземпляру модуля. Символ инструкции связан с DkmModule, а не с DkmModuleInstance, поэтому он не привязан к конкретному процессу, домену приложения или базовому адресу модуля.

(Унаследовано от DkmInstructionSymbol)
Create(DkmModule, UInt32)

Create новый экземпляр объекта DkmNativeInstructionSymbol.

GetAlternateSourcePosition(DkmSourcePositionFlags)

Возвращает альтернативную позицию исходного файла (например, example.cs, строка 12) для этого символа инструкции. В настоящее время используется в сценариях сопоставления источников для возврата исходного (несопоставленного) исходного расположения. Этот API будет вызываться пользовательским интерфейсом отладчика в случаях, когда не удается найти основное исходное расположение.

Ограничение расположения: API должен вызываться из компонента IDE (уровень > компонента 100 000).

Этот API появился в Visual Studio 12 с обновлением 3 (DkmApiVersion.VS12Update3).

(Унаследовано от DkmInstructionSymbol)
GetBasicInfo(DkmWorkList, DkmModuleInstance, DkmBasicSymbolInfoRequestFlags, DkmCompletionRoutine<DkmGetBasicSymbolInfoAsyncResult>)

Асинхронно вычисляет основные сведения о символах для заданного DkmInstructionSymbol.

Этот метод добавляет новый рабочий элемент в указанный рабочий список и возвращается после добавления рабочего элемента. Фактическая обработка рабочего элемента является асинхронной. Вызывающий объект получит уведомление о том, что запрос завершен в рамках процедуры завершения.

Ограничение расположения: API должен вызываться из компонента IDE (уровень > компонента 100 000).

Этот API появился в Visual Studio 16 RTM (DkmApiVersion.VS16RTMPreview).

(Унаследовано от DkmInstructionSymbol)
GetCompilerId(DkmInspectionSession)

Возвращает идентификатор компилятора (LanguageId/VendorId) заданного символа.

Для средства чтения PDB Microsoft, если PDB был создан компилятором, который использовал ISymUnmanagedWriter, то средство чтения PDB сможет определить правильный DkmCompilerId из пары LanguageId/VendorId, переданной из ISymUnmanagedWriter.DefineDocument.

Если PDB был создан компилятором, который не использовал ISymUnmanagedWriter, средство чтения PDB может получить DkmCompilerId из записей PDB S_COMPILE*. Чтобы это работало, компилятор должен сначала создать запись S_COMPILE* для каждого компилятора. Компилятор должен правильно заполнить значение перечисления языка и строку компилятора. Компилятор должен убедиться, что строка компилятора достаточно специфична для использования для выбора вычислителя выражений; Рекомендуется включить название компании. После создания пары Enum/Name программа установки для средства оценки выражений должна зарегистрировать эту пару в отладчике. Для этого вычислитель выражений должен задать следующий раздел реестра: %VSRegistryRoot%\Debugger\CodeView Compilers%CodeViewLanguageCode%:%CompilerName% и определить VendorId/LanguageId.

(Унаследовано от DkmInstructionSymbol)
GetCompilerId(DkmWorkList, DkmInspectionSession, DkmCompletionRoutine<DkmGetCompilerIdAsyncResult>)

Возвращает идентификатор компилятора (LanguageId/VendorId) заданного символа.

Для средства чтения PDB Microsoft, если PDB был создан компилятором, который использовал ISymUnmanagedWriter, то средство чтения PDB сможет определить правильный DkmCompilerId из пары LanguageId/VendorId, переданной из ISymUnmanagedWriter.DefineDocument.

Если PDB был создан компилятором, который не использовал ISymUnmanagedWriter, средство чтения PDB может получить DkmCompilerId из записей PDB S_COMPILE*. Чтобы это работало, компилятор должен сначала создать запись S_COMPILE* для каждого компилятора. Компилятор должен правильно заполнить значение перечисления языка и строку компилятора. Компилятор должен убедиться, что строка компилятора достаточно специфична для использования для выбора вычислителя выражений; Рекомендуется включить название компании. После создания пары Enum/Name программа установки для средства оценки выражений должна зарегистрировать эту пару в отладчике. Для этого вычислитель выражений должен задать следующий раздел реестра: %VSRegistryRoot%\Debugger\CodeView Compilers%CodeViewLanguageCode%:%CompilerName% и определить VendorId/LanguageId.

Этот метод добавляет новый рабочий элемент в указанный рабочий список и возвращается после добавления рабочего элемента. Фактическая обработка рабочего элемента является асинхронной. Вызывающий объект получит уведомление о том, что запрос завершен в рамках процедуры завершения.

Ограничение расположения: API должен вызываться из компонента IDE (уровень > компонента 100 000).

Этот API появился в Visual Studio 16 RTM (DkmApiVersion.VS16RTMPreview).

(Унаследовано от DkmInstructionSymbol)
GetCurrentStatementRange()

Этот метод возвращает диапазон смещения IL, содержащий текущее смещение IL, как указано в адресе инструкции.

Ограничение расположения: API должен вызываться из компонента Monitor (уровень < компонента 100 000).

(Унаследовано от DkmInstructionSymbol)
GetDisassemblyLabel(DkmInspectionSession)

Возвращает имя символа, отображаемого в окне дизассемблирования. Для кода Microsoft C++ это основано на имени открытого символа.

Ограничение расположения: API должен вызываться из компонента IDE (уровень > компонента 100 000).

(Унаследовано от DkmInstructionSymbol)
GetEmbeddedDocument()

Возвращает внедренный документ, содержащий этот символ. Возвращает S_FALSE, если внедренный документ не существует.

Ограничение расположения: API должен вызываться из компонента IDE (уровень > компонента 100 000).

Этот API появился в Visual Studio 15 с обновлением 5 (DkmApiVersion.VS15Update5).

(Унаследовано от DkmInstructionSymbol)
GetGPUInstructionMetadataCallback(DkmInstructionAddress, DkmInstructionSymbol)

Этот метод возвращает сведения об адресе монитору отладки GPU.

(Унаследовано от DkmInstructionSymbol)
GetInlineFramesCount(DkmBasicSymbolInfoRequestFlags)

Возвращает количество встроенных кадров в заданном символе инструкции.

Ограничение расположения: API должен вызываться из компонента IDE (уровень > компонента 100 000).

Этот API появился в Visual Studio 16 RTM (DkmApiVersion.VS16RTMPreview).

(Унаследовано от DkmInstructionSymbol)
GetInlineFramesCount(DkmWorkList, DkmBasicSymbolInfoRequestFlags, DkmCompletionRoutine<DkmGetInlineFramesCountAsyncResult>)

Возвращает количество встроенных кадров в заданном символе инструкции.

Этот метод добавляет новый рабочий элемент в указанный рабочий список и возвращается после добавления рабочего элемента. Фактическая обработка рабочего элемента является асинхронной. Вызывающий объект получит уведомление о том, что запрос завершен в рамках процедуры завершения.

Ограничение расположения: API должен вызываться из компонента IDE (уровень > компонента 100 000).

Этот API появился в Visual Studio 16 RTM (DkmApiVersion.VS16RTMPreview).

(Унаследовано от DkmInstructionSymbol)
GetInlineSourcePosition(DkmStackWalkFrame, Boolean)

Возвращает позицию исходного файла (например, example.cs, строка 12) этого символа инструкции по указанному номеру встроенного кадра. Если этот символ инструкции не связан с исходным файлом, возвращается значение NULL (S_FALSE возвращает код в машинном коде).

Ограничение расположения: API должен вызываться из компонента IDE (уровень > компонента 100 000).

Этот API появился в Visual Studio 15 RTM (DkmApiVersion.VS15RTM).

(Унаследовано от DkmInstructionSymbol)
GetInlineSourcePosition(DkmWorkList, DkmStackWalkFrame, DkmCompletionRoutine<DkmGetInlineSourcePositionAsyncResult>)

Возвращает позицию исходного файла (например, example.cs, строка 12) этого символа инструкции по указанному номеру встроенного кадра. Если этот символ инструкции не связан с исходным файлом, возвращается значение NULL (S_FALSE возвращает код в машинном коде).

Этот метод добавляет новый рабочий элемент в указанный рабочий список и возвращается после добавления рабочего элемента. Фактическая обработка рабочего элемента является асинхронной. Вызывающий объект получит уведомление о том, что запрос завершен в рамках процедуры завершения.

Ограничение расположения: API должен вызываться из компонента IDE (уровень > компонента 100 000).

Этот API появился в Visual Studio 15 RTM (DkmApiVersion.VS15RTM).

(Унаследовано от DkmInstructionSymbol)
GetNativeInstructionMetadataCallback(DkmInstructionAddress)

Возвращает сведения об адресе в собственный монитор отладки.

GetNoSourceRanges()

Запрашивает поставщик символов, чтобы определить диапазоны инструкций, которые не соответствуют инструкциям источника пользователя и используются базовым монитором отладки для пошагового выполнения во время пошагового выполнения.

(Унаследовано от DkmInstructionSymbol)
GetSourcePosition(DkmSourcePositionFlags, DkmInspectionSession, Boolean)

Возвращает позицию исходного файла (например, example.cs, строка 12) этого символа инструкции. Если этот символ инструкции не связан с исходным файлом, возвращается значение NULL (S_FALSE возвращает код в машинном коде).

Ограничение расположения: API должен вызываться из компонента IDE (уровень > компонента 100 000).

(Унаследовано от DkmInstructionSymbol)
GetSourcePosition(DkmWorkList, DkmSourcePositionFlags, DkmInspectionSession, DkmCompletionRoutine<DkmGetSourcePositionAsyncResult>)

Возвращает позицию исходного файла (например, example.cs, строка 12) этого символа инструкции. Если этот символ инструкции не связан с исходным файлом, возвращается значение NULL (S_FALSE возвращает код в машинном коде).

Этот метод добавляет новый рабочий элемент в указанный рабочий список и возвращается после добавления рабочего элемента. Фактическая обработка рабочего элемента является асинхронной. Вызывающий объект получит уведомление о том, что запрос завершен в рамках процедуры завершения.

Ограничение расположения: API должен вызываться из компонента IDE (уровень > компонента 100 000).

(Унаследовано от DkmInstructionSymbol)
GetSourcePositionCallback(DkmSourcePositionFlags, DkmInspectionSession, Boolean)

Возвращает позицию исходного файла (например, example.cs, строка 12) этого символа инструкции. Если этот символ инструкции не связан с исходным файлом, возвращается значение NULL (S_FALSE возвращает код в машинном коде).

Ограничение расположения: API должен вызываться из компонента Monitor (уровень < компонента 100 000).

(Унаследовано от DkmInstructionSymbol)
GetSourcePositionCallback(DkmWorkList, DkmSourcePositionFlags, DkmInspectionSession, DkmCompletionRoutine<DkmGetSourcePositionCallbackAsyncResult>)

Возвращает позицию исходного файла (например, example.cs, строка 12) этого символа инструкции. Если этот символ инструкции не связан с исходным файлом, возвращается значение NULL (S_FALSE возвращает код в машинном коде).

Этот метод добавляет новый рабочий элемент в указанный рабочий список и возвращается после добавления рабочего элемента. Фактическая обработка рабочего элемента является асинхронной. Вызывающий объект получит уведомление о том, что запрос завершен в рамках процедуры завершения.

Ограничение расположения: API должен вызываться из компонента Monitor (уровень < компонента 100 000).

(Унаследовано от DkmInstructionSymbol)
GetSteppingNativeInstructionMetadata(DkmModuleInstance, DkmInstructionAddress)

Вызывается собственным DM для получения данных об инструкции, которая используется для определения способа пошагового выполнения этой инструкции.

Ограничение расположения: API должен вызываться из компонента Monitor (уровень < компонента 100 000).

Этот API появился в Visual Studio 14 RTM (DkmApiVersion.VS14RTM).

GetSteppingRanges(DkmModuleInstance, DkmInstructionAddress, DkmSteppingRangeBoundary, Boolean)

Запрашивает поставщик символов, чтобы определить диапазоны инструкций, которые базовый монитор отладки должен выполнить для реализации шага.

Ограничение расположения: API должен вызываться из компонента Monitor (уровень < компонента 100 000).

Этот API появился в Visual Studio 14 RTM (DkmApiVersion.VS14RTM).

GetSteppingRanges(DkmSteppingRangeBoundary, Boolean)

Запрашивает поставщик символов, чтобы определить диапазоны инструкций, которые базовый монитор отладки должен выполнить для реализации шага.

Ограничение расположения: API должен вызываться из компонента Monitor (уровень < компонента 100 000).

(Унаследовано от DkmInstructionSymbol)
GetSteppingRanges(DkmWorkList, DkmModuleInstance, DkmInstructionAddress, DkmSteppingRangeBoundary, Boolean, DkmCompletionRoutine<DkmGetSteppingRangesAsyncResult>)

Запрашивает поставщик символов, чтобы определить диапазоны инструкций, которые базовый монитор отладки должен выполнить для реализации шага.

Этот метод добавляет новый рабочий элемент в указанный рабочий список и возвращается после добавления рабочего элемента. Фактическая обработка рабочего элемента является асинхронной. Вызывающий объект получит уведомление о том, что запрос завершен в рамках процедуры завершения.

Ограничение расположения: API должен вызываться из компонента Monitor (уровень < компонента 100 000).

Этот API появился в Visual Studio 14 RTM (DkmApiVersion.VS14RTM).

GetSteppingRanges(DkmWorkList, DkmSteppingRangeBoundary, Boolean, DkmCompletionRoutine<DkmGetSteppingRangesAsyncResult>)

Запрашивает поставщик символов, чтобы определить диапазоны инструкций, которые базовый монитор отладки должен выполнить для реализации шага.

Этот метод добавляет новый рабочий элемент в указанный рабочий список и возвращается после добавления рабочего элемента. Фактическая обработка рабочего элемента является асинхронной. Вызывающий объект получит уведомление о том, что запрос завершен в рамках процедуры завершения.

Ограничение расположения: API должен вызываться из компонента Monitor (уровень < компонента 100 000).

(Унаследовано от DkmInstructionSymbol)
GetUserCodeSourcePositionCallback(DkmInspectionSession)

Возвращает позицию исходного файла (например, example.cs, строка 12) этого символа инструкции. Если этот символ инструкции не связан с исходным файлом или отсутствует в пользовательском коде, возвращается значение NULL (E_INSTRUCTION_NO_SOURCE код возврата).

Ограничение расположения: API должен вызываться из компонента Monitor (уровень < компонента 100 000).

(Унаследовано от DkmInstructionSymbol)
GetUserCodeSourcePositionCallback(DkmWorkList, DkmInspectionSession, DkmCompletionRoutine<DkmGetUserCodeSourcePositionCallbackAsyncResult>)

Возвращает позицию исходного файла (например, example.cs, строка 12) этого символа инструкции. Если этот символ инструкции не связан с исходным файлом или отсутствует в пользовательском коде, возвращается значение NULL (E_INSTRUCTION_NO_SOURCE код возврата).

Этот метод добавляет новый рабочий элемент в указанный рабочий список и возвращается после добавления рабочего элемента. Фактическая обработка рабочего элемента является асинхронной. Вызывающий объект получит уведомление о том, что запрос завершен в рамках процедуры завершения.

Ограничение расположения: API должен вызываться из компонента Monitor (уровень < компонента 100 000).

(Унаследовано от DkmInstructionSymbol)
HasEmbeddedDocument()

Проверяет, имеет ли данный символ внедренный документ. Внедренные документы — это когда исходный файл (например, main.cs) внедряется в файл символов (например, example.pdb).

Ограничение расположения: API должен вызываться из компонента IDE (уровень > компонента 100 000).

Этот API появился в Visual Studio 15 с обновлением 8 (DkmApiVersion.VS15Update8).

(Унаследовано от DkmInstructionSymbol)
HasLineInfo()

Запрашивает поставщика символов, чтобы определить, есть ли у нас сведения о строке. Используется монитором отладки для определения того, можно ли считать расположение пользовательским кодом.

Ограничение расположения. Для обычных символов можно вызывать из любого компонента. Для динамических символов можно вызывать только на стороне сервера.

(Унаследовано от DkmInstructionSymbol)
HasLineInfo(DkmWorkList, DkmCompletionRoutine<DkmHasLineInfoAsyncResult>)

Запрашивает поставщика символов, чтобы определить, есть ли у нас сведения о строке. Используется монитором отладки для определения того, можно ли считать расположение пользовательским кодом.

Этот метод добавляет новый рабочий элемент в указанный рабочий список и возвращается после добавления рабочего элемента. Фактическая обработка рабочего элемента является асинхронной. Вызывающий объект получит уведомление о том, что запрос завершен в рамках процедуры завершения.

Ограничение расположения. Для обычных символов можно вызывать из любого компонента. Для динамических символов можно вызывать только на стороне сервера.

(Унаследовано от DkmInstructionSymbol)
IsHiddenCode(DkmWorkList, DkmInspectionSession, DkmInstructionAddress, DkmCompletionRoutine<DkmIsHiddenCodeAsyncResult>)

Возвращает значение , если этот символ инструкции находится в скрытом коде. Например, в управляемом коде номер строки 0xfeefee помечает исходную строку как скрытую.

Этот метод добавляет новый рабочий элемент в указанный рабочий список и возвращается после добавления рабочего элемента. Фактическая обработка рабочего элемента является асинхронной. Вызывающий объект получит уведомление о том, что запрос завершен в рамках процедуры завершения.

Ограничение расположения: API должен вызываться из компонента IDE (уровень > компонента 100 000).

(Унаследовано от DkmInstructionSymbol)

Применяется к