Implementazione di esempio variabili locali
Di seguito vengono forniti cenni preliminari su come Visual Studio ottiene le variabili locali per un metodo dall'analizzatore di (EE) espressioni:
Visual Studio chiama il motore (DE) IDebugStackFrame2:: GetDebugProperty di debug per IDebugProperty2 ottenere un oggetto che rappresenta tutte le proprietà dello stack frame, inclusi quelli locali.
chiamate IDebugExpressionEvaluator:: GetMethodProperty diIDebugStackFrame2::GetDebugProperty per ottenere un oggetto che descrive il metodo in cui il punto di interruzione si è verificato. Il DE fornisce un provider di simboli (IDebugSymbolProvider), un indirizzo (IDebugAddress) e un gestore di associazione (IDebugBinder).
chiamate IDebugSymbolProvider:: GetContainerField diIDebugExpressionEvaluator::GetMethodProperty con l'oggetto fornito di IDebugAddress per ottenere IDebugContainerField un oggetto che rappresenta il metodo contenente l'indirizzo specificato.
L'interfaccia di IDebugContainerField viene eseguita una query per IDebugMethodField l'interfaccia. È l'interfaccia che fornisce l'accesso a quelle del metodo.
IDebugExpressionEvaluator::GetMethodProperty creare un'istanza di una classe (chiamata CFieldProperty nell'esempio) che implementa l'interfaccia di IDebugProperty2 per rappresentare i locali del metodo. L'oggetto di IDebugMethodField viene posizionato in questo oggetto di CFieldProperty con IDebugSymbolProvider, IDebugAddress e gli oggetti di IDebugBinder .
Quando l'oggetto di CFieldProperty viene inizializzato, IDebugField:: GetInfo viene chiamato sull'oggetto di IDebugMethodField per FIELD_INFORMATION ottenere una struttura che contiene tutte le informazioni visualizzabile sul metodo stesso.
IDebugExpressionEvaluator::GetMethodProperty restituisce l'oggetto di CFieldProperty come oggetto di IDebugProperty2 .
Le chiamate di Visual IDebugProperty2:: EnumChildren Studio in IDebugProperty2 restituito oggetto con il filtro guidFilterLocalsPlusArgs. Viene restituito IEnumDebugPropertyInfo2 un oggetto che contiene i locali del metodo. Questa enumerazione viene soddisfatta dalle chiamate a IDebugMethodField:: EnumLocals e IDebugMethodField:: EnumArguments.
chiamate di Visual Studio IEnumDebugPropertyInfo2:: dopo per ottenere DEBUG_PROPERTY_INFORMATION una struttura per ogni locale. Questa struttura contiene un puntatore a un'interfaccia di IDebugProperty2 per un locale.
Richieste IDebugProperty2:: GetPropertyInfo di Visual Studio per ogni locale per ottenere il nome, valore e il tipo locale. Si tratta delle informazioni visualizzate nella finestra di locali .
Argomenti della sezione
implementare GetMethodProperty
descrive un'implementazione di IDebugExpressionEvaluator:: GetMethodProperty.Enumerazione variabili locali
Viene descritto come il motore (DE) di debug effettua una chiamata per enumerare le variabili locali o argomenti.Ottenere proprietà locali
Viene descritto come il DE effettua una chiamata per ottenere il nome, il tipo e il valore di uno o più locali.ottenere i valori locali
Viene illustrato come ottenere il valore locale, che richiede i servizi di un oggetto del gestore di associazione fornito dal contesto di valutazione.locali di valutazione
Viene illustrato come variabili locali vengono valutati.
Sezioni correlate
contesto di valutazione
Vengono forniti argomenti passati al DE chiama l'analizzatore di espressioni (EE).MyCEE Sample
Viene illustrato un approccio di implementazione per creare un analizzatore di espressioni per il linguaggio di MyC.