Condividi tramite


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:

  1. 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.

  2. 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).

  3. chiamate IDebugSymbolProvider:: GetContainerField diIDebugExpressionEvaluator::GetMethodProperty con l'oggetto fornito di IDebugAddress per ottenere IDebugContainerField un oggetto che rappresenta il metodo contenente l'indirizzo specificato.

  4. L'interfaccia di IDebugContainerField viene eseguita una query per IDebugMethodField l'interfaccia. È l'interfaccia che fornisce l'accesso a quelle del metodo.

  5. 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 .

  6. 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.

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

  8. 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.

  9. 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.

  10. 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

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.

Vedere anche

Altre risorse

Visualizzare variabili locali