DkmInstructionSymbol Класс

Определение

DkmInstructionSymbol представляет метод в целевом процессе.

Производные классы: 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
Наследование
DkmInstructionSymbol
Производный
Атрибуты

Свойства

Module

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

RuntimeType

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

TagValue

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

Методы

Bind(DkmModuleInstance)

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

GetAlternateSourcePosition(DkmSourcePositionFlags)

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

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

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

GetBasicInfo(DkmWorkList, DkmModuleInstance, DkmBasicSymbolInfoRequestFlags, DkmCompletionRoutine<DkmGetBasicSymbolInfoAsyncResult>)

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

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

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

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

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.

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

GetCurrentStatementRange()

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

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

GetDisassemblyLabel(DkmInspectionSession)

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

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

GetEmbeddedDocument()

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

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

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

GetGPUInstructionMetadataCallback(DkmInstructionAddress, DkmInstructionSymbol)

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

GetInlineFramesCount(DkmBasicSymbolInfoRequestFlags)

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

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

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

GetInlineFramesCount(DkmWorkList, DkmBasicSymbolInfoRequestFlags, DkmCompletionRoutine<DkmGetInlineFramesCountAsyncResult>)

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

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

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

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

GetInlineSourcePosition(DkmStackWalkFrame, Boolean)

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

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

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

GetInlineSourcePosition(DkmWorkList, DkmStackWalkFrame, DkmCompletionRoutine<DkmGetInlineSourcePositionAsyncResult>)

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

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

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

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

GetNoSourceRanges()

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

GetSourcePosition(DkmSourcePositionFlags, DkmInspectionSession, Boolean)

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

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

GetSourcePosition(DkmWorkList, DkmSourcePositionFlags, DkmInspectionSession, DkmCompletionRoutine<DkmGetSourcePositionAsyncResult>)

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

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

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

GetSourcePositionCallback(DkmSourcePositionFlags, DkmInspectionSession, Boolean)

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

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

GetSourcePositionCallback(DkmWorkList, DkmSourcePositionFlags, DkmInspectionSession, DkmCompletionRoutine<DkmGetSourcePositionCallbackAsyncResult>)

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

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

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

GetSteppingRanges(DkmSteppingRangeBoundary, Boolean)

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

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

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

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

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

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

GetUserCodeSourcePositionCallback(DkmInspectionSession)

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

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

GetUserCodeSourcePositionCallback(DkmWorkList, DkmInspectionSession, DkmCompletionRoutine<DkmGetUserCodeSourcePositionCallbackAsyncResult>)

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

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

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

HasEmbeddedDocument()

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

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

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

HasLineInfo()

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

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

HasLineInfo(DkmWorkList, DkmCompletionRoutine<DkmHasLineInfoAsyncResult>)

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

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

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

IsHiddenCode(DkmWorkList, DkmInspectionSession, DkmInstructionAddress, DkmCompletionRoutine<DkmIsHiddenCodeAsyncResult>)

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

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

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

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