Condividi tramite


DkmClrInstructionAddress Classe

Definizione

DkmClrInstructionAddress viene usato per gli indirizzi nel codice gestito.

Classi derivate: 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
Ereditarietà
DkmClrInstructionAddress
Derivato
Attributi

Proprietà

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

MethodId

Coppia di versione/token per questo metodo.

ModuleInstance

Modulo contenente InstructionPointer.

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.

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

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

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

Create una nuova istanza dell'oggetto DkmClrInstructionAddress.

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

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

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.

GetNonUserCodeMetadataFlags()

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

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.

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

Si applica a