Compartilhar via


DkmClrNcInstructionAddress Classe

Definição

DkmClrNcInstructionAddress é usado para representar um endereço no código CLR compilado nativamente. Ele contém as informações sobre onde a instrução está usando conceitos gerenciados (DkmClrNcModuleInstance, token de método, deslocamento il) e conceitos nativos ( DkmClrNcContainerModuleInstance, RVA).

Essa API foi introduzida no Visual Studio 15 Atualização 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
Herança
Atributos

Propriedades

ContainerModule

O módulo de contêiner subjacente (módulo em disco) em que esse endereço é carregado. Os símbolos (DkmModule) são acessados por meio deste módulo em vez de "ModuleInstance".

Essa API foi introduzida no Visual Studio 15 Atualização 6 (DkmApiVersion.VS15Update6).

CPUInstructionPart

[Opcional] CPUInstructionPart fornece o endereço que a CPU executará. Isso sempre é fornecido para instruções nativas. Ele pode ser fornecido para CLR ou endereços personalizados, dependendo de como o objeto de endereço foi criado.

(Herdado de DkmInstructionAddress)
GenericParameters

[Opcional] Para métodos genéricos, isso fornece a assinatura TypeSpec formatada por ECMA para cada parâmetro genérico. Para métodos não genéricos, isso será nulo. Para módulos não mesclados, isso é relativo ao mapeamento (ou assembly pseudo-IL).

Essa API foi introduzida no Visual Studio 15 Atualização 6 (DkmApiVersion.VS15Update6).

ILOffset

ILOffset é o índice da instrução IL que esse endereço representa. Esse valor pode ser definido como UInt32.MaxValue para uma instrução que está dentro do método fornecido, mas não está vinculado a uma instrução IL específica. Isso é usado para instruções nativas clr que não são mapeadas para uma instrução IL. (ICorDebugILFrame::GetIP indica MAPPING_UNMAPPED_ADDRESS).

(Herdado de DkmClrInstructionAddress)
MethodId

O par de versão/token para esse método.

(Herdado de DkmClrInstructionAddress)
ModuleInstance

O módulo gerenciado que contém o InstructionPointer.

Essa API foi introduzida no Visual Studio 15 Atualização 6 (DkmApiVersion.VS15Update6).

NativeOffset

Para o .NET Framework padrão, NativeOffset é um deslocamento de bytes relativo ao início do método em que a instrução da CPU pode ser encontrada. Para fins desse valor, o método deve ser tratado como um bloco contíguo de bytes. Se o método não tiver sido compilado just-in-time ou se esse endereço estiver sendo usado para se referir puramente ao endereço IL, NativeOffset será definido como UInt32.MaxValue.

Para módulos de .NET Framework compilados nativos, esse valor é o RVA da instrução nativa no módulo.

(Herdado de DkmClrInstructionAddress)
Process

O DkmProcess representa um processo de destino que está sendo depurado. O depurador depura processos, portanto, essa é a unidade básica de depuração. Um DkmProcess pode representar um processo do sistema ou um processo virtual, como minidumps.

(Herdado de DkmInstructionAddress)
ReferenceToken

[Opcional] Em um assembly de vários módulos, MethodId.Token é um token de método resolvido para o módulo virtual apropriado. Esse token pode ser pesquisado no pseudo-assembly.

Essa API foi introduzida no Visual Studio 15 Atualização 6 (DkmApiVersion.VS15Update6).

RuntimeInstance

Representa uma instância CLR compilada nativamente em execução em um processo de destino.

Essa API foi introduzida no Visual Studio 15 Atualização 6 (DkmApiVersion.VS15Update6).

TagValue

DkmInstructionAddress é uma classe base abstrata. Essa enumeração indica de qual classe derivada esse objeto é uma instância do .

(Herdado de DkmInstructionAddress)

Métodos

CompareTo(DkmInstructionAddress)

Compara dois endereços de instrução e retorna um valor que indica se um é menor que, igual a ou maior que o outro. Os endereços devem ser do mesmo módulo.

(Herdado de DkmInstructionAddress)
Create(DkmClrMethodId, UInt32, UInt32, DkmClrNcRuntimeInstance, DkmClrNcModuleInstance, DkmClrNcContainerModuleInstance, ReadOnlyCollection<Byte>, Int32, DkmInstructionAddress+CPUInstruction)

Create uma nova instância de objeto DkmClrNcInstructionAddress.

Essa API foi introduzida no Visual Studio 15 Atualização 6 (DkmApiVersion.VS15Update6).

DecodeAsyncStateMachineAttribute()

Obtém o tipo máquina de estado assíncrono e o token de método do método MoveNext nesse tipo.

Restrição de local: a API deve ser chamada de um componente Monitor (nível < de componente 100.000).

Essa API foi introduzida no Visual Studio 17 RTM (DkmApiVersion.VS17RTM).

(Herdado de DkmClrInstructionAddress)
GetCorFunction()

Fornece acesso direto ao objeto ICorDebugFunction, que avaliadores de expressão ou outros componentes podem usar para inspecionar o domínio do aplicativo.

A interface retornada só pode ser usada para inspecionar o processo de destino e NUNCA deve ser usada para controlar a execução (sem etapas, nenhum ponto de interrupção, nenhuma continuação etc. Isso não tem suporte e resultará em um comportamento indefinido.

Restrição de local: a API deve ser chamada de um componente Monitor (nível < de componente 100.000).

(Herdado de DkmClrInstructionAddress)
GetCurrentCPUAddress()

Resolve um DkmInstructionAddress para uma instrução de CPUAddress. Esse é o mapeamento reverso de ResolveCPUInstructionAddress. Atualmente, essa API só tem suporte por objetos CLR DkmRuntimeInstance.

Restrição de local: essa API geralmente deve ser chamada no cliente, mas pode ser chamada no servidor para traduzir endereços CLR (mas não compilados nativamente).

(Herdado de DkmInstructionAddress)
GetCurrentCPUAddress(DkmWorkList, DkmCompletionRoutine<DkmGetCurrentCPUAddressAsyncResult>)

Resolve um DkmInstructionAddress para uma instrução de CPUAddress. Esse é o mapeamento reverso de ResolveCPUInstructionAddress. Atualmente, essa API só tem suporte por objetos CLR DkmRuntimeInstance.

Esse método acrescentará um novo item de trabalho à lista de trabalho especificada e retornará depois que o item de trabalho for acrescentado. O processamento real do item de trabalho é assíncrono. O chamador será notificado de que a solicitação foi concluída por meio da rotina de conclusão.

Restrição de local: essa API geralmente deve ser chamada no cliente, mas pode ser chamada no servidor para traduzir endereços CLR (mas não compilados nativamente).

(Herdado de DkmInstructionAddress)
GetNativeCodeMap(DkmStackWalkFrame)

Fornece o mapa de como esse método foi compilado para código nativo.

(Herdado de DkmClrInstructionAddress)
GetNonUserCodeMetadataFlags()

Obtém status de código não usuário para este endereço de instrução.

(Herdado de DkmClrInstructionAddress)
GetNonUserCodeMetadataFlags(DkmWorkList, DkmCompletionRoutine<DkmGetNonUserCodeMetadataFlagsAsyncResult>)

Obtém status de código não usuário para este endereço de instrução.

Esse método acrescentará um novo item de trabalho à lista de trabalho especificada e retornará depois que o item de trabalho for acrescentado. O processamento real do item de trabalho é assíncrono. O chamador será notificado de que a solicitação foi concluída por meio da rotina de conclusão.

(Herdado de DkmClrInstructionAddress)
GetSymbol()

Converta um DkmInstructionAddress em um DkmInstructionSymbol. Se o DkmInstructionAddress não estiver em um DkmModule, GetSymbol retornará nulo (S_FALSE no código nativo).

(Herdado de DkmInstructionAddress)
IsInSameFunction(DkmInstructionAddress)

Compara dois endereços de instrução e determina se eles estão dentro da mesma função.

Restrição de local: a API deve ser chamada de um componente IDE (nível > de componente 100.000).

(Herdado de DkmInstructionAddress)
IsUserCode(DkmWorkList, DkmCompletionRoutine<DkmIsUserCodeAsyncResult>)

Determina se um determinado endereço de instrução é o código do usuário ou não.

Esse método acrescentará um novo item de trabalho à lista de trabalho especificada e retornará depois que o item de trabalho for acrescentado. O processamento real do item de trabalho é assíncrono. O chamador será notificado de que a solicitação foi concluída por meio da rotina de conclusão.

Restrição de local: observação: com a Atualização 8 do Visual Studio 2017, o CallDirection da API foi tornado 'Bidirecional' de 'Normal' e agora pode ser chamado de qualquer componente.

Essa API foi introduzida no Visual Studio 12 RTM (DkmApiVersion.VS12RTM).

(Herdado de DkmInstructionAddress)
IsUserCodeWithoutCheckingLineInfo()

Método auxiliar implementado pelo DM gerenciado e usado pelo shim EE para determinar se um método é código do usuário enquanto estamos andando pilhas de retorno assíncronas. Não queremos usar o método IsUserCode() regular porque esse método faz uma viagem de ida e volta para o provedor de símbolos para ver se há informações de linha. Para evitar isso, usamos esse método para que o DM gerenciado faça suas outras verificações. Em seguida, quando o shim EE retornar ao provedor de símbolos, o provedor de símbolos marcar para obter informações de linha. Isso permite que toda a pilha de retorno gerenciada seja calculada em uma viagem de ida e volta para o lado remoto, sem a necessidade de conversar extra para frente e para trás apenas para determinar se os quadros de pilha de retorno são código do usuário ou não.

Restrição de local: a API deve ser chamada de um componente Monitor (nível < de componente 100.000).

Essa API foi introduzida no Visual Studio 12 RTM (DkmApiVersion.VS12RTM).

(Herdado de DkmClrInstructionAddress)

Aplica-se a