DkmStepper Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
DkmStepper rappresenta una richiesta per eseguire un thread. Semplifica la durata dell'oggetto condiviso tra i vari monitoraggi di debug di runtime che partecipano all'istruzione.
public ref class DkmStepper : Microsoft::VisualStudio::Debugger::DkmDataContainer, IDisposable
[System.Runtime.InteropServices.Guid("2aae9764-33a3-8fc7-22ff-e27c9de91bda")]
public class DkmStepper : Microsoft.VisualStudio.Debugger.DkmDataContainer, IDisposable
[<System.Runtime.InteropServices.Guid("2aae9764-33a3-8fc7-22ff-e27c9de91bda")>]
type DkmStepper = class
inherit DkmDataContainer
interface IDisposable
Public Class DkmStepper
Inherits DkmDataContainer
Implements IDisposable
- Ereditarietà
- Ereditarietà
- Attributi
- Implementazioni
Proprietà
| CodePath |
[Facoltativo] Se StepKind è StepIntoSpecific, specifica la chiamata che si sta eseguendo. In caso contrario, è NULL. |
| CrossThreadParent |
[Facoltativo] Se viene creato un nuovo stepper usando OnCrossThreadStepArbitration, il gestore di passaggi imposta questo campo per semplificare il passaggio del passaggio originale se il passaggio incrociato ha esito negativo o deve eseguire il fallback. Deprecato. Usare invece GetCrossThreadParent. |
| CurrentCodePaths |
[Facoltativo] Nel debug gestito contiene tutti i percorsi di codice nell'intervallo di passaggi corrente. In caso contrario, è NULL. Questa API è stata introdotta in Visual Studio 12 RTM (DkmApiVersion.VS12RTM). |
| CurrentMethodName |
[Facoltativo] Nel debug gestito contiene il nome del metodo corrente. In caso contrario, è NULL. Questa API è stata introdotta in Visual Studio 12 RTM (DkmApiVersion.VS12RTM). |
| FrameBase |
Base fotogramma del primo fotogramma all'inizio del passaggio. Questo valore verrà MAXUINT64 se l'oggetto StartingAddress non è stato specificato. |
| IsUnloaded |
Restituisce true se viene generato un evento "non caricato" per questo oggetto (ad esempio: DkmThread::Unload viene chiamato) o se l'oggetto è stato chiuso. Si noti che è necessario usare attenzione quando si controlla questo stato come, senza sincronizzazione, lo stato restituito potrebbe non essere più accurato dopo la lettura. (Ereditato da DkmDataContainer) |
| ShouldCaptureReturnValue |
Nel debug gestito, indica se il passaggioper voleva acquisire il valore restituito durante l'esecuzione dell'istruzione. Il valore predefinito è false. Questa API è stata introdotta in Visual Studio 12 RTM (DkmApiVersion.VS12RTM). |
| SourceId |
Identifica l'origine di un oggetto. Gli id di origine vengono usati per abilitare il filtro negli scenari in cui più componenti possono creare istanze di una classe. Ad esempio, gli ID di origine possono essere usati per determinare se un punto di interruzione proviene da AD7 AL (ad esempio: punto di interruzione utente o altro punto di interruzione visibile a livello di SDM) anziché un punto di interruzione che può essere creato da un altro componente (ad esempio un punto di interruzione interno usato per l'esecuzione dell'istruzione). |
| StartingAddress |
[Facoltativo] Indirizzo dell'istruzione del processo al momento dell'avvio di questo passaggio. Questo valore sarà NULL se il passaggio ha origine in un thread senza frame (Script & Solo gestito). |
| StepKind |
DkmStepKind descrive come eseguire il passaggio del thread quando viene chiamato il metodo Step. |
| StepUnit |
DkmStepUnit descrive la granularità del passaggio quando viene chiamato il metodo Step. |
| Thread |
DkmThread rappresenta un thread in esecuzione nel processo di destinazione. |
| UniqueId |
Guid che identifica in modo univoco questo DkmStepper. |
Metodi
| BeforeEnable() |
Chiamato dalla gestione eventi di arresto prima che un'operazione di passaggio inizi effettivamente L'arresto di Gestione eventi notifica tutte le istanze di runtime in modo che possano configurare qualsiasi stato necessario prima che la gestione eventi di arresto inizi a bloccare le valutazioni delle funzioni. Vincolo percorso: l'API deve essere chiamata da un componente Monitor (livello < di componente 100.000). |
| CancelStepper(DkmRuntimeInstance) |
Consente l'annullamento di un passaggio dopo la creazione dall'istanza del runtime di controllo. L'istanza di runtime chiamante deve corrispondere all'istanza corrente del runtime di controllo. Questa operazione viene generalmente usata negli scenari di passaggio incrociato in cui il passaggio originale può essere riattivato. Il manager di passaggio chiude il passaggio e non invia il passaggio completato. Vincolo percorso: l'API deve essere chiamata da un componente Monitor (livello < di componente 100.000). |
| Close() |
Chiude l'oggetto stepper. Questa operazione deve essere chiusa dai componenti al termine del passaggio, ad esempio quando viene eliminato un evento di completamento di un passaggio o se il passaggio non riesce a inizializzare. I passaggi verranno chiusi in modo implicito se il thread viene chiuso o il debugger viene arrestato. Verranno chiusi dal gestore delle istruzioni se viene emessa una richiesta di esecuzione a livello di utente diversa. Gli oggetti DkmStepper vengono chiusi automaticamente quando l'oggetto DkmThread associato viene chiuso. |
| Create(DkmThread, DkmInstructionAddress, UInt64, DkmStepKind, DkmStepUnit, Guid, DkmSteppingCodePath, DkmStepper, Boolean, ReadOnlyCollection<DkmSteppingCodePath>, String, DkmDataItem) |
Gli oggetti DkmStepper vengono creati dai componenti che desiderano eseguire un passaggio. I passaggi a livello di utente vengono creati da AD7-AL. Per inizializzare un oggetto stepper, Enable deve essere chiamato. Gli oggetti stepper verranno attivati fino al completamento del passaggio o interrotti. Questa API è stata introdotta in Visual Studio 12 RTM (DkmApiVersion.VS12RTM). |
| Create(DkmThread, DkmInstructionAddress, UInt64, DkmStepKind, DkmStepUnit, Guid, DkmSteppingCodePath, DkmStepper, DkmDataItem) |
Gli oggetti DkmStepper vengono creati dai componenti che desiderano eseguire un passaggio. I passaggi a livello di utente vengono creati da AD7-AL. Per inizializzare un oggetto stepper, Enable deve essere chiamato. Gli oggetti stepper verranno attivati fino al completamento del passaggio o interrotti. |
| Enable(Boolean) |
Usato per inizializzare un oggetto stepper in modo che il passaggio venga eseguito quando l'esecuzione viene ripresa successivamente. Questo metodo viene implementato dal gestore delle istruzioni individuando un monitoraggio di debug di runtime appropriato e chiedendo a questo monitoraggio di debug di runtime di configurare un passaggio. Questo metodo deve essere chiamato una sola volta per un determinato oggetto stepper. Vincolo percorso: l'API deve essere chiamata da un componente Monitor (livello < di componente 100.000). |
| GetControllingRuntimeInstance() |
Restituisce l'istanza di runtime attualmente in controllo di questo DkmStepper. Vincolo percorso: l'API deve essere chiamata da un componente Monitor (livello < di componente 100.000). |
| GetCrossThreadParent() |
Usare invece di CrossThreadParent. Vincolo percorso: l'API deve essere chiamata da un componente Monitor (livello < di componente 100.000). Questa API è stata introdotta in Visual Studio 16 Update 9 (DkmApiVersion.VS16Update9). |
| GetDataItem<T>() |
Ottiene l'istanza di 'T' che è stata aggiunta a questa istanza del contenitore. Se questo contenitore non contiene un 'T', questa funzione restituirà Null. (Ereditato da DkmDataContainer) |
| IsExceptionInFlight() |
Ottiene il flag nel DkmStepper che indica se un monitoraggio di runtime ritiene che un'eccezione sia attualmente in esecuzione durante questo passaggio. Questa operazione può essere usata dai monitoraggi di runtime per modificare il comportamento dell'esecuzione. Vincolo percorso: l'API deve essere chiamata da un componente Monitor (livello < di componente 100.000). Questa API è stata introdotta in Visual Studio 11 Update 1 (DkmApiVersion.VS11FeaturePack1). |
| OnCrossThreadStepArbitration(DkmStepArbitrationReason, DkmRuntimeInstance, DkmThread, DkmInstructionAddress, DkmStepper) |
Chiamato da un monitoraggio di runtime quando un passaggio continua su un thread diverso. Il responsabile delle fasi creerà un nuovo DkmStepper da usare nel nuovo thread e avvierà l'arbitrato di passaggio per determinare quale runtime deve completare il passaggio proprio come avviee in OnStepArbitration. Il nuovo stepper usa lo stesso tipo di passaggio e l'unità di passaggio del passaggio originale. Un nuovo indirizzo di istruzione iniziale deve essere specificato e viene impostato come indirizzo iniziale del passaggio. Il passaggio originale rimane attivo e quando il nuovo stepper completa il gestore di passaggi elimina l'evento e notifica il passaggio originale del completamento. Vincolo percorso: l'API deve essere chiamata da un componente Monitor (livello < di componente 100.000). |
| OnReturnValues(ReadOnlyCollection<DkmRawReturnValue>, Boolean) |
Generare un evento ReturnValues. I componenti che implementano l'interfaccia del sink di eventi riceveranno la notifica dell'evento. Il controllo restituirà una volta che tutti i componenti sono stati notificati. |
| OnStepArbitration(DkmStepArbitrationReason, DkmRuntimeInstance) |
Chiamato da un monitoraggio di runtime quando un passaggio ha lasciato i limiti di ciò che il monitoraggio del runtime comprende o una potenziale transizione in un altro runtime è stato rilevato durante un passaggio. Il responsabile dell'istruzione avvia l'arbitrato per consentire a ogni monitoraggio del runtime di controllare il processo e determinare quale runtime deve completare il passaggio. I runtime vengono chiamati in ordine di priorità. Al termine di questo processo, il responsabile delle fasi chiama AfterSteppingArbitration sul monitor che ha richiesto l'arbitrato in modo che possa rispondere al nuovo monitoraggio di controllo se è stato trovato o completare il passaggio se non è stato trovato. Vincolo percorso: l'API deve essere chiamata da un componente Monitor (livello < di componente 100.000). |
| OnStepComplete(DkmThread, Boolean) |
Generare un evento StepComplete. I componenti che implementano l'interfaccia del sink di eventi riceveranno la notifica dell'evento. Questo metodo eseguirà la sequenza dell'evento e del controllo restituirà immediatamente al chiamante. |
| RemoveDataItem<T>() |
Rimuovere l'istanza di 'T' da questo contenitore. In genere non è necessario chiamare questo metodo come contenitore di dati verrà svuotato automaticamente quando l'oggetto viene chiuso. (Ereditato da DkmDataContainer) |
| SetDataItem<T>(DkmDataCreationDisposition, T) |
Inserire un nuovo elemento nel contenitore dati. (Ereditato da DkmDataContainer) |
| SetExceptionInFlight(Boolean) |
I monitoraggi di runtime chiamano questa opzione per impostare o cancellare un flag sul DkmStepper che può essere usato dai runtime di collaborazione per modificare il comportamento dell'esecuzione se un'eccezione è corrente in anteprima. Chiamato dai monitoraggi di runtime quando viene rilevata un'eccezione durante l'esecuzione. Vincolo percorso: l'API deve essere chiamata da un componente Monitor (livello < di componente 100.000). Questa API è stata introdotta in Visual Studio 11 Update 1 (DkmApiVersion.VS11FeaturePack1). |
| StepControlRequested(DkmStepArbitrationReason, DkmRuntimeInstance) |
StepControlRequested viene chiamato quando un'istanza di runtime non controllante rileva che il thread ha raggiunto una transizione al runtime. Il gestore delle istruzioni inoltra la chiamata all'istanza corrente del runtime di controllo. Se l'istanza corrente del runtime di controllo può arrestare l'esecuzione, deve essere impostata su true. Il controllo effettivo non viene assegnato fino a quando il runtime di richieste chiama DkmStepper.TakeStepControl. Questo processo di due parti consente ai chiamanti di richiedere il controllo di più passaggi contemporaneamente. Vincolo percorso: l'API deve essere chiamata da un componente Monitor (livello < di componente 100.000). |
| TakeStepControl(Boolean, DkmStepArbitrationReason, DkmRuntimeInstance) |
TakeStepControl viene chiamato quando un'istanza di runtime non controllante rileva che il thread ha raggiunto una transizione al runtime. Il gestore delle istruzioni inoltra la chiamata all'istanza corrente del runtime di controllo. Il controllo di richiesta dell'istanza di runtime deve prima chiamare StepControlRequested in tutti i passaggi di cui vuole il controllo. Se vengono impostati su true, l'istanza di runtime deve quindi chiamare questo metodo su ogni passaggio che sta prendendo il controllo di . Vincolo percorso: l'API deve essere chiamata da un componente Monitor (livello < di componente 100.000). |
Implementazioni dell'interfaccia esplicita
| IDisposable.Dispose() |
Da aggiungere. |