Analizzatore di espressioni

Gli analizzatori di espressioni (edizione Enterprise) esaminano la sintassi di un linguaggio per analizzare e valutare variabili ed espressioni in fase di esecuzione, consentendo loro di essere visualizzati dall'utente quando l'IDE è in modalità di interruzione.

Usare analizzatori di espressioni

Le espressioni vengono create usando il metodo ParseText , come indicato di seguito:

  1. Il motore di debug implementa l'interfaccia IDebugExpressionContext2 .

  2. Il pacchetto di debug ottiene un IDebugExpressionContext2 oggetto da un'interfaccia IDebugStackFrame2 e quindi chiama il IDebugStackFrame2::ParseText metodo su di esso per ottenere un oggetto IDebugExpression2 .

  3. Il pacchetto di debug chiama il metodo EvaluateSync o il metodo EvaluateAsync per ottenere il valore dell'espressione. IDebugExpression2::EvaluateAsync viene chiamato dalla finestra Comando/Immediato. Tutti gli altri componenti dell'interfaccia utente chiamano IDebugExpression2::EvaluateSync.

  4. Il risultato della valutazione dell'espressione è un oggetto IDebugProperty2 , che contiene il nome, il tipo e il valore del risultato della valutazione dell'espressione.

    Durante la valutazione dell'espressione, il edizione Enterprise richiede informazioni dal componente del provider di simboli. Il provider di simboli fornisce le informazioni simboliche usate per identificare e comprendere l'espressione analizzata.

    Al termine della valutazione asincrona delle espressioni, un evento asincrono viene inviato da DE tramite il gestore di debug della sessione (SDM) per notificare all'IDE che la valutazione dell'espressione è stata completata. Il risultato della valutazione viene quindi restituito dalla chiamata al IDebugExpression2::EvaluateSync metodo .

Note per l'implementazione

I motori di debug di Visual Studio prevedono di comunicare con l'analizzatore di espressioni usando interfacce CLR (Common Language Runtime). Di conseguenza, un analizzatore di espressioni che funziona con i motori di debug di Visual Studio deve supportare CLR (un elenco completo di tutte le interfacce di debug CLR è disponibile in debugref.doc, che fa parte di Windows Software Development Kit (SDK)).

Vedi anche