Condividi tramite


DkmClrNcInstructionAddress Classe

Definizione

DkmClrNcInstructionAddress viene usato per rappresentare un indirizzo nel codice CLR compilato in modo nativo. Contiene le informazioni sulla posizione in cui l'istruzione usa entrambi i concetti gestiti (DkmClrNcModuleInstance, token di metodo, offset IL) e concetti nativi (DkmClrNcContainerModuleInstance, RVA).

Questa API è stata introdotta in Visual Studio 15 Update 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
Ereditarietà
Attributi

Proprietà

ContainerModule

Modulo contenitore sottostante (modulo su disco) in cui questo indirizzo viene caricato. I simboli (DkmModule) vengono accessibili tramite questo modulo anziché "ModuleInstance".

Questa API è stata introdotta in Visual Studio 15 Update 6 (DkmApiVersion.VS15Update6).

CPUInstructionPart

[Facoltativo] CPUInstructionPart fornisce l'indirizzo che verrà eseguito dalla CPU. Viene sempre fornito per istruzioni native. Può essere fornito per CLR o indirizzi personalizzati a seconda del modo in cui è stato creato l'oggetto indirizzo.

(Ereditato da DkmInstructionAddress)
GenericParameters

[Facoltativo] Per i metodi generici, questo fornisce la firma TypeSpec formattata ECMA per ogni parametro generico. Per i metodi non generici, questo sarà Null. Per i moduli non uniti, questo è relativo al mapping (o all'assembly pseudo-IL).

Questa API è stata introdotta in Visual Studio 15 Update 6 (DkmApiVersion.VS15Update6).

ILOffset

ILOffset è l'indice dell'istruzione IL rappresentata da questo indirizzo. Questo valore può essere impostato su UInt32.MaxValue per un'istruzione all'interno del metodo specificato, ma non associata a un'istruzione IL specifica. Questa operazione viene usata per istruzioni native CLR che non vengono mappate a un'istruzione IL. (ICorDebugILFrame::GetIP indica MAPPING_UNMAPPED_ADDRESS).

(Ereditato da DkmClrInstructionAddress)
MethodId

Coppia di versione/token per questo metodo.

(Ereditato da DkmClrInstructionAddress)
ModuleInstance

Modulo gestito contenente InstructionPointer.

Questa API è stata introdotta in Visual Studio 15 Update 6 (DkmApiVersion.VS15Update6).

NativeOffset

Per .NET Framework standard, NativeOffset è un offset di byte relativo all'inizio del metodo in cui è possibile trovare l'istruzione CPU. Allo scopo di questo valore, il metodo deve essere considerato come un blocco contiguo di byte. Se il metodo non è stato compilato just-in-time o se questo indirizzo viene usato per fare riferimento esclusivamente all'indirizzo IL, NativeOffset verrà impostato su UInt32.MaxValue.

Per i moduli .NET Framework compilati in modo nativo, questo valore è l'RVA dell'istruzione nativa nel modulo.

(Ereditato da DkmClrInstructionAddress)
Process

DkmProcess rappresenta un processo di destinazione in fase di debug. Il debugger esegue il debug dei processi, quindi questa è l'unità di base del debug. Un DkmProcess può rappresentare un processo di sistema o un processo virtuale, ad esempio minidump.

(Ereditato da DkmInstructionAddress)
ReferenceToken

[Facoltativo] In un assembly multi-modulo, MethodId.Token è un token di metodo risolto nel modulo virtuale appropriato. Questo token può essere cercato nell'assembly pseudo-.

Questa API è stata introdotta in Visual Studio 15 Update 6 (DkmApiVersion.VS15Update6).

RuntimeInstance

Rappresenta un'istanza CLR compilata nativa in esecuzione in un processo di destinazione.

Questa API è stata introdotta in Visual Studio 15 Update 6 (DkmApiVersion.VS15Update6).

TagValue

DkmInstructionAddress è una classe base astratta. Questa enumerazione indica la classe derivata di questo oggetto è un'istanza di .

(Ereditato da DkmInstructionAddress)

Metodi

CompareTo(DkmInstructionAddress)

Confronta due indirizzi di istruzione e restituisce un valore che indica se uno è minore di, uguale o maggiore dell'altro. Gli indirizzi devono trovarsi nello stesso modulo.

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

Create una nuova istanza dell'oggetto DkmClrNcInstructionAddress.

Questa API è stata introdotta in Visual Studio 15 Update 6 (DkmApiVersion.VS15Update6).

DecodeAsyncStateMachineAttribute()

Ottiene il tipo Async State Machine e il token di metodo del metodo MoveNext su tale tipo.

Vincolo percorso: l'API deve essere chiamata da un componente Monitor (livello < di componente 100.000).

Questa API è stata introdotta in Visual Studio 17 RTM (DkmApiVersion.VS17RTM).

(Ereditato da DkmClrInstructionAddress)
GetCorFunction()

Fornisce l'accesso diretto all'oggetto ICorDebugFunction, che gli analizzatori di espressioni o altri componenti possono usare per controllare il dominio dell'app.

L'interfaccia restituita può essere usata SOLO per controllare il processo di destinazione e non deve mai essere usata per controllare l'esecuzione (nessun passaggio, nessun punto di interruzione, nessuna continuazione e così via). In questo modo non è supportato e comporterà un comportamento non definito.

Vincolo percorso: l'API deve essere chiamata da un componente Monitor (livello < di componente 100.000).

(Ereditato da DkmClrInstructionAddress)
GetCurrentCPUAddress()

Risolve un oggetto DkmInstructionAddress in un'istruzione CPUAddress. Si tratta del mapping inverso di ResolveCPUInstructionAddress. Questa API è attualmente supportata solo dagli oggetti CLR DkmRuntimeInstance.

Vincolo percorso: questa API deve in genere essere chiamata sul client, ma può essere chiamata sul server per la conversione di indirizzi CLR (ma non compilata in modo nativo).

(Ereditato da DkmInstructionAddress)
GetCurrentCPUAddress(DkmWorkList, DkmCompletionRoutine<DkmGetCurrentCPUAddressAsyncResult>)

Risolve un oggetto DkmInstructionAddress in un'istruzione CPUAddress. Si tratta del mapping inverso di ResolveCPUInstructionAddress. Questa API è attualmente supportata solo dagli oggetti CLR DkmRuntimeInstance.

Questo metodo aggiungerà un nuovo elemento di lavoro all'elenco di lavoro specificato e restituirà una volta aggiunto l'elemento di lavoro. L'elaborazione effettiva dell'elemento di lavoro è asincrona. Il chiamante riceverà una notifica che la richiesta viene completata tramite la routine di completamento.

Vincolo percorso: questa API deve in genere essere chiamata sul client, ma può essere chiamata sul server per la conversione di indirizzi CLR (ma non compilata in modo nativo).

(Ereditato da DkmInstructionAddress)
GetNativeCodeMap(DkmStackWalkFrame)

Fornisce la mappa del modo in cui questo metodo è stato compilato nel codice nativo.

(Ereditato da DkmClrInstructionAddress)
GetNonUserCodeMetadataFlags()

Ottiene lo stato del codice non utente per questo indirizzo di istruzione.

(Ereditato da DkmClrInstructionAddress)
GetNonUserCodeMetadataFlags(DkmWorkList, DkmCompletionRoutine<DkmGetNonUserCodeMetadataFlagsAsyncResult>)

Ottiene lo stato del codice non utente per questo indirizzo di istruzione.

Questo metodo aggiungerà un nuovo elemento di lavoro all'elenco di lavoro specificato e restituirà una volta aggiunto l'elemento di lavoro. L'elaborazione effettiva dell'elemento di lavoro è asincrona. Il chiamante riceverà una notifica che la richiesta viene completata tramite la routine di completamento.

(Ereditato da DkmClrInstructionAddress)
GetSymbol()

Convertire un DkmInstructionAddress in un DkmInstructionSymbol. Se DkmInstructionAddress non è in un DkmModule, GetSymbol restituirà null (S_FALSE nel codice nativo).

(Ereditato da DkmInstructionAddress)
IsInSameFunction(DkmInstructionAddress)

Confronta due indirizzi di istruzione e determina se sono all'interno della stessa funzione.

Vincolo percorso: l'API deve essere chiamata da un componente IDE (livello > di componente 100.000).

(Ereditato da DkmInstructionAddress)
IsUserCode(DkmWorkList, DkmCompletionRoutine<DkmIsUserCodeAsyncResult>)

Determina se un determinato indirizzo di istruzione è codice utente o meno.

Questo metodo aggiungerà un nuovo elemento di lavoro all'elenco di lavoro specificato e restituirà una volta aggiunto l'elemento di lavoro. L'elaborazione effettiva dell'elemento di lavoro è asincrona. Il chiamante riceverà una notifica che la richiesta viene completata tramite la routine di completamento.

Vincolo percorso: nota: con Visual Studio 2017 Update 8, la callDirection dell'API è stata effettuata "Bidirezionale" da "Normal" e ora può essere chiamata da qualsiasi componente.

Questa API è stata introdotta in Visual Studio 12 RTM (DkmApiVersion.VS12RTM).

(Ereditato da DkmInstructionAddress)
IsUserCodeWithoutCheckingLineInfo()

Metodo helper implementato dal dm gestito e usato dallo shim EE per determinare se un metodo è codice utente mentre si camminano stack di ritorno asincroni. Non si vuole usare il metodo IsUserCode() regolare perché questo metodo esegue un round trip nel provider di simboli per verificare se sono presenti informazioni sulla riga. Per evitare questo problema, si usa questo metodo per avere il dm gestito eseguire gli altri controlli. Quindi, quando lo shim EE torna al provider di simboli, il provider di simboli verificherà quindi la presenza di informazioni sulla riga. In questo modo, l'intero stack restituito gestito può essere calcolato in un round trip sul lato remoto, senza la necessità di una chat aggiuntiva solo per determinare se i frame dello stack restituito sono codice utente o meno.

Vincolo percorso: l'API deve essere chiamata da un componente Monitor (livello < di componente 100.000).

Questa API è stata introdotta in Visual Studio 12 RTM (DkmApiVersion.VS12RTM).

(Ereditato da DkmClrInstructionAddress)

Si applica a