Architettura dell'analizzatore di espressioni
L'integrazione del linguaggio privato nel pacchetto di Visual Studio debug è l'implementazione delle interfacce obbligatorie (EE)analizzatore di espressioni e chiamare le API del provider e (SP) del gestore di associazione dei simboli di Common Language Runtime. Gli oggetti gestore di associazione e di SP, insieme all'indirizzo corrente di esecuzione, è il contesto in cui vengono valutate le espressioni. Le informazioni che queste interfacce vengono scritte e utilizzano rappresentano i concetti chiave nell'architettura dell'EE.
Panoramica
analizzare l'espressione
Quando si esegue il debug di un programma, le espressioni vengono valutate in alcune situazioni tuttavia sempre in cui il programma sottoposto a debug è stato interrotto a un punto di interruzione (un punto di interruzione inserito dall'utente o uno causato da un'eccezione). In questo momento in Visual Studio ottiene uno stack frame, come rappresentato IDebugStackFrame2 dall'interfaccia, dal motore di (DE) debug. Chiamate IDebugStackFrame2:: GetExpressionContext di Visual Studio quindi per IDebugExpressionContext2 ottenere l'interfaccia. questa interfaccia rappresenta un contesto in cui le espressioni possono essere valutate; IDebugExpressionContext2:: ParseText è il punto di ingresso al processo di valutazione. Fino a questo punto, tutte le interfacce implementate da DE.
Quando IDebugExpressionContext2::ParseText viene chiamato, il DE creare un'istanza l'EE associata al linguaggio del file di origine in cui il punto di interruzione si è verificato (il DE inoltre creata un'istanza dello SH in questa fase). L'EE è rappresentata IDebugExpressionEvaluator dall'interfaccia. Le chiamate di DE quindi IDebugExpressionEvaluator:: Di traccia per convertire l'espressione (in forma di testo) a un'espressione analizzata, pronta per la valutazione. Questa espressione analizzata è rappresentata IDebugParsedExpression dall'interfaccia. Si noti che l'espressione in genere si analizza e non viene valutata in questa fase.
Il DE crea un oggetto che implementa IDebugExpression2 l'interfaccia, inserisce l'oggetto di IDebugParsedExpression nell'oggetto di IDebugExpression2 e restituisce l'oggetto di IDebugExpression2 da IDebugExpressionContext2::ParseText.
Valutare l'espressione
In Visual Studio viene chiamato o IDebugExpression2:: EvaluateSync IDebugExpression2:: EvaluateAsync valutare l'espressione analizzata. Chiamata IDebugParsedExpression:: EvaluateSync di entrambi i metodi (IDebugExpression2::EvaluateSync chiama il metodo immediatamente, mentre IDebugExpression2::EvaluateAsync chiama il metodo tramite un thread in background) per valutare l'espressione analizzata e restituire IDebugProperty2 un'interfaccia che rappresenta il valore e il tipo dell'espressione analizzata. IDebugParsedExpression::EvaluateSync utilizza lo SH, l'indirizzo e il raccoglitore forniti per convertire l'espressione analizzata in un valore effettivo, rappresentato dall'interfaccia di IDebugProperty2 .
Ad esempio
Dopo viene raggiunto un punto di interruzione in un programma in esecuzione, l'utente sceglie di visualizzare una variabile nella finestra di dialogo di Controllo immediato . In questa finestra di dialogo viene visualizzato il nome della variabile, il valore e il tipo. L'utente in genere possibile modificare il valore.
Quando la finestra di dialogo di Controllo immediato viene visualizzata, il nome della variabile che vengono valutate viene inviato come testo IDebugExpressionContext2:: ParseText. Viene restituito IDebugExpression2 un oggetto che rappresenta l'espressione analizzata, in questo caso, la variabile. IDebugExpression2:: EvaluateSync viene quindi chiamato per produrre un oggetto di IDebugProperty2 che rappresenta il valore e il tipo della variabile nonché il nome. È tali informazioni visualizzate.
Se l'utente modifica il valore della variabile, IDebugProperty2:: SetValueAsString viene chiamato con il nuovo valore, che modifica il valore della variabile in memoria in modo che verrà utilizzato quando il programma viene ripresa l'esecuzione di.
Vedere Visualizzare variabili locali per informazioni dettagliate su questo processo di visualizzare i valori delle variabili. Vedere modificare il valore di un locale per ulteriori informazioni su come valore della variabile viene modificato.
Argomenti della sezione
contesto di valutazione
Vengono forniti argomenti passati al DE chiama l'EE.Interfacce principali dell'analizzatore di espressioni
Vengono descritte le interfacce cruciali necessarie quando si scrivono l'EE, al contesto di valutazione.
Vedere anche
Concetti
modificare il valore di un locale
Altre risorse
Scrittura dell'analizzatore di espressioni di Common Language Runtime