DkmClrNcInstructionAddress Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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) |