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


DkmClrNcInstructionAddress Класс

Определение

DkmClrNcInstructionAddress используется для представления адресов в скомпилированном в собственном коде CLR. Он содержит сведения о том, где инструкция использует как управляемые понятия (DkmClrNcModuleInstance, токен метода, смещение IL), так и собственные понятия (DkmClrNcContainerModuleInstance, RVA).

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

public ref class DkmClrNcInstructionAddress : Microsoft::VisualStudio::Debugger::Clr::DkmClrInstructionAddress
[Windows::Foundation::Metadata::WebHostHidden]
public ref class DkmClrNcInstructionAddress : Microsoft::VisualStudio::Debugger::Clr::DkmClrInstructionAddress
[Windows::Foundation::Metadata::WebHostHidden]
class DkmClrNcInstructionAddress : Microsoft::VisualStudio::Debugger::Clr::DkmClrInstructionAddress
[System.Runtime.InteropServices.Guid("377ece5a-e9ff-bb6a-1612-b5d9cc54755f")]
public class DkmClrNcInstructionAddress : Microsoft.VisualStudio.Debugger.Clr.DkmClrInstructionAddress
[<System.Runtime.InteropServices.Guid("377ece5a-e9ff-bb6a-1612-b5d9cc54755f")>]
type DkmClrNcInstructionAddress = class
    inherit DkmClrInstructionAddress
Public Class DkmClrNcInstructionAddress
Inherits DkmClrInstructionAddress
Наследование
Атрибуты

Свойства

ContainerModule

Базовый модуль контейнера (модуль на диске), в который загружается этот адрес. Доступ к символам (DkmModule) осуществляется через этот модуль, а не через ModuleInstance.

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

CPUInstructionPart

[Необязательно] CPUInstructionPart предоставляет адрес, который будет выполнять ЦП. Это всегда предоставляется для собственных инструкций. Он может быть предоставлен для clR или пользовательских адресов в зависимости от того, как был создан объект address.

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

[Необязательно] Для универсальных методов предоставляется сигнатура TypeSpec в формате ECMA для каждого универсального параметра. Для неуниверсических методов это значение будет иметь значение NULL. Для несоединяемых модулей это относится к сопоставлению (или псевдо-сборке IL).

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

ILOffset

ILOffset — это индекс инструкции IL, представленной этим адресом. Это значение может иметь значение UInt32.MaxValue для инструкции, которая находится в заданном методе, но не привязана к определенной инструкции IL. Используется для собственных инструкций CLR, которые не сопоставляют с инструкцией IL. (ICorDebugILFrame::GetIP указывает MAPPING_UNMAPPED_ADDRESS).

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

Пара "версия/токен" для этого метода.

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

Управляемый модуль, содержащий InstructionPointer.

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

NativeOffset

Для стандартного платформа .NET Framework NativeOffset — это смещение в байтах относительно начала метода, в котором можно найти инструкцию ЦП. Для этого значения метод должен рассматриваться как непрерывный блок байтов. Если метод не был скомпилирован JIT или этот адрес используется для ссылки исключительно на адрес IL, Для NativeOffset будет задано значение UInt32.MaxValue.

Для модулей платформа .NET Framework, скомпилированных в собственном коде, это значение является RVA собственной инструкции в модуле.

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

DkmProcess представляет отлаживаемый целевой процесс. Отладчик отлаживать процессы, поэтому это базовая единица отладки. DkmProcess может представлять системный или виртуальный процесс, например минидампы.

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

[Необязательно] В сборке с несколькими модулями MethodId.Token является маркером метода, который разрешается в соответствующий виртуальный модуль. Этот маркер можно найти в псевдо-сборке.

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

RuntimeInstance

Представляет скомпилированный в собственном коде экземпляр СРЕДЫ CLR, выполняющийся в целевом процессе.

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

TagValue

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

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

Методы

CompareTo(DkmInstructionAddress)

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

(Унаследовано от DkmInstructionAddress)
Create(DkmClrMethodId, UInt32, UInt32, DkmClrNcRuntimeInstance, DkmClrNcModuleInstance, DkmClrNcContainerModuleInstance, ReadOnlyCollection<Byte>, Int32, DkmInstructionAddress+CPUInstruction)

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

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

DecodeAsyncStateMachineAttribute()

Получает тип Асинхронного конечного автомата и маркер метода метода MoveNext для этого типа.

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

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

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

Предоставляет прямой доступ к объекту ICorDebugFunction, который вычислители выражений или другие компоненты могут использовать для проверки домена приложения.

Возвращенный интерфейс может использоваться ТОЛЬКО для проверки целевого процесса и никогда не должен использоваться для управления выполнением (без пошагового выполнения, точек останова, без продолжения и т. д.). Это не поддерживается и приведет к неопределенному поведению.

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

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

Разрешает DkmInstructionAddress в инструкцию ЦПAddress. Это обратное сопоставление ResolveCPUInstructionAddress. В настоящее время этот API поддерживается только объектами CLR DkmRuntimeInstance.

Ограничение расположения. Этот API обычно следует вызывать на клиенте, но его можно вызвать на сервере для преобразования адресов СРЕДЫ CLR (но не скомпилированных в собственном коде).

(Унаследовано от DkmInstructionAddress)
GetCurrentCPUAddress(DkmWorkList, DkmCompletionRoutine<DkmGetCurrentCPUAddressAsyncResult>)

Разрешает DkmInstructionAddress в инструкцию ЦПAddress. Это обратное сопоставление ResolveCPUInstructionAddress. В настоящее время этот API поддерживается только объектами CLR DkmRuntimeInstance.

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

Ограничение расположения. Этот API обычно следует вызывать на клиенте, но его можно вызвать на сервере для преобразования адресов СРЕДЫ CLR (но не скомпилированных в собственном коде).

(Унаследовано от DkmInstructionAddress)
GetNativeCodeMap(DkmStackWalkFrame)

Предоставляет карту того, как этот метод компилировался в машинный код.

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

Получает состояние непользовательского кода для этого адреса инструкции.

(Унаследовано от DkmClrInstructionAddress)
GetNonUserCodeMetadataFlags(DkmWorkList, DkmCompletionRoutine<DkmGetNonUserCodeMetadataFlagsAsyncResult>)

Получает состояние непользовательского кода для этого адреса инструкции.

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

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

Преобразование DkmInstructionAddress в DkmInstructionSymbol. Если DkmInstructionAddress не находится в DkmModule, getSymbol вернет null (S_FALSE в машинном коде).

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

Сравнивает два адреса инструкций и определяет, находятся ли они в одной и той же функции.

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

(Унаследовано от DkmInstructionAddress)
IsUserCode(DkmWorkList, DkmCompletionRoutine<DkmIsUserCodeAsyncResult>)

Определяет, является ли заданный адрес инструкции кодом пользователя.

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

Ограничение расположения. Примечание. В Visual Studio 2017 с обновлением 8 каталог CallDirection API был сделан двунаправленным из обычного и теперь может вызываться из любого компонента.

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

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

Вспомогательный метод, реализованный управляемым dm и используемый оболочкой EE, чтобы определить, является ли метод пользовательским кодом при выполнении асинхронных стеков возврата. Мы не будем использовать обычный метод IsUserCode(), так как этот метод выполняет круговой путь к поставщику символов, чтобы узнать, есть ли сведения о строке. Чтобы избежать этого, мы используем этот метод для выполнения других проверок управляемого административного объекта. Затем, когда оболочка EE возвращается к поставщику символов, поставщик символов будет проверка для сведений о строке. Это позволяет вычислить весь управляемый стек возврата за один круговой путь к удаленной стороне без необходимости дополнительного чата туда и обратно, чтобы определить, являются ли возвращаемые кадры стека пользовательским кодом.

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

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

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

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