Compartilhar via


DkmClrInstructionAddress Classe

Definição

DkmClrInstructionAddress é usado para endereços no código gerenciado.

Classes derivadas: DkmClrNcInstructionAddress

public ref class DkmClrInstructionAddress : Microsoft::VisualStudio::Debugger::DkmInstructionAddress
[Windows::Foundation::Metadata::WebHostHidden]
public ref class DkmClrInstructionAddress : Microsoft::VisualStudio::Debugger::DkmInstructionAddress
[Windows::Foundation::Metadata::WebHostHidden]
class DkmClrInstructionAddress : Microsoft::VisualStudio::Debugger::DkmInstructionAddress
[System.Runtime.InteropServices.Guid("ef7a9773-03a1-0aab-55bb-ee6b870e6246")]
public class DkmClrInstructionAddress : Microsoft.VisualStudio.Debugger.DkmInstructionAddress
[<System.Runtime.InteropServices.Guid("ef7a9773-03a1-0aab-55bb-ee6b870e6246")>]
type DkmClrInstructionAddress = class
    inherit DkmInstructionAddress
Public Class DkmClrInstructionAddress
Inherits DkmInstructionAddress
Herança
DkmClrInstructionAddress
Derivado
Atributos

Propriedades

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

MethodId

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

ModuleInstance

O módulo que contém o InstructionPointer.

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.

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

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

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(DkmClrRuntimeInstance, DkmClrModuleInstance, DkmClrMethodId, UInt32, UInt32, DkmInstructionAddress+CPUInstruction)

Create uma nova instância de objeto DkmClrInstructionAddress.

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

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

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.

GetNonUserCodeMetadataFlags()

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

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.

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

Aplica-se a