Leggere in inglese

Condividi tramite


Implementazione di esempio delle variabili locali

Importante

In Visual Studio 2015 questo modo di implementare gli analizzatori di espressioni è deprecato. Per informazioni sull'implementazione degli analizzatori di espressioni CLR, vedere l'esempio degli analizzatori di espressioni CLR e dell'analizzatore di espressioni gestite.

Di seguito è riportata una panoramica del modo in cui Visual Studio ottiene le variabili locali per un metodo dall'analizzatore di espressioni (edizione Enterprise):

  1. Visual Studio chiama getDebugProperty (DE) del motore di debug per ottenere un oggetto IDebugProperty2 che rappresenta tutte le proprietà del frame dello stack, incluse le variabili locali.

  2. IDebugStackFrame2::GetDebugProperty chiama GetMethodProperty per ottenere un oggetto che descrive il metodo all'interno del quale si è verificato il punto di interruzione. DE fornisce un provider di simboli (IDebugSymbolProvider), un indirizzo (IDebugAddress) e un binder (IDebugBinder).

  3. IDebugExpressionEvaluator::GetMethodProperty chiama GetContainerField con l'oggetto fornito IDebugAddress per ottenere un oggetto IDebugContainerField che rappresenta il metodo contenente l'indirizzo specificato.

  4. Viene IDebugContainerField eseguita una query sull'interfaccia IDebugMethodField . Si tratta di questa interfaccia che consente l'accesso alle variabili locali del metodo.

  5. IDebugExpressionEvaluator::GetMethodProperty crea un'istanza di una classe (chiamata CFieldProperty nell'esempio) che esegue l'interfaccia IDebugProperty2 per rappresentare le variabili locali del metodo. L'oggetto IDebugMethodField viene inserito in questo CFieldProperty oggetto insieme agli IDebugSymbolProvideroggetti , IDebugAddresse IDebugBinder .

  6. Quando l'oggetto CFieldProperty viene inizializzato, GetInfo viene chiamato sull'oggetto IDebugMethodField per ottenere una struttura FIELD_INFO che contiene tutte le informazioni visualizzabili sul metodo stesso.

  7. IDebugExpressionEvaluator::GetMethodProperty restituisce l'oggetto CFieldProperty come IDebugProperty2 oggetto .

  8. Visual Studio chiama EnumChildren sull'oggetto restituito IDebugProperty2 con il filtro guidFilterLocalsPlusArgs, che restituisce un oggetto IEnumDebugPropertyInfo2 contenente le variabili locali del metodo. Questa enumerazione viene compilata dalle chiamate a EnumLocals ed EnumArguments.

  9. Visual Studio chiama Next per ottenere una struttura DEBUG_PROPERTY_INFO per ogni locale. Questa struttura contiene un puntatore a un'interfaccia IDebugProperty2 per un oggetto locale.

  10. Visual Studio chiama GetPropertyInfo per ogni locale per ottenere il nome, il valore e il tipo locali. Queste informazioni vengono visualizzate nella finestra Variabili locali .

In questa sezione

Implementare GetMethodProperty Descrive un'implementazione di GetMethodProperty.

Enumerare variabili locali Descrive come il motore di debug effettua una chiamata per enumerare variabili o argomenti locali.

Ottiene le proprietà locali Descrive come de esegue una chiamata per ottenere il nome, il tipo e il valore di una o più variabili locali.

Ottenere i valori locali Illustra come ottenere il valore dell'oggetto locale, che richiede i servizi di un oggetto binder fornito dal contesto di valutazione.

Valuta variabili locali Spiega come vengono valutate le variabili locali.

Contesto di valutazione Fornisce gli argomenti passati quando denota l'analizzatore di espressioni (edizione Enterprise).

MyC edizione Enterprise esempio Illustra un approccio di implementazione alla creazione di un analizzatore di espressioni per il linguaggio MyC.

Vedi anche