Delen via


Voorbeeldimplementatie van lokale variabelen

Belangrijk

In Visual Studio 2015 wordt deze manier om expressie-evaluators te implementeren afgeschaft. Zie CLR-expressie-evaluators en voorbeeld van de beheerde expressie-evaluatorvoor informatie over het implementeren van CLR-expressie-evaluators.

Hieronder vindt u een overzicht van hoe Visual Studio de lokale variabelen ophaalt voor een methode door de expressie-evaluator (EE):

  1. Visual Studio roept de foutopsporingsengine (DE) GetDebugProperty aan om een IDebugProperty2-object te krijgen dat alle eigenschappen van het stackframe vertegenwoordigt, inclusief de lokale bevolking.

  2. IDebugStackFrame2::GetDebugProperty roept GetMethodProperty- aan om een object op te halen waarin de methode wordt beschreven waarin het onderbrekingspunt is opgetreden. De DE levert een symboolprovider (IDebugSymbolProvider), een adres (IDebugAddress) en een binder (IDebugBinder).

  3. IDebugExpressionEvaluator::GetMethodProperty roept GetContainerField- aan met het opgegeven IDebugAddress-object om een IDebugContainerField- op te halen die de methode vertegenwoordigt die het opgegeven adres bevat.

  4. De IDebugContainerField-interface wordt opgevraagd voor de interface IDebugMethodField. Het is deze interface die toegang geeft tot de lokalen van de methode.

  5. IDebugExpressionEvaluator::GetMethodProperty instantieert een klasse (CFieldProperty genoemd in het voorbeeld) waarmee de IDebugProperty2-interface wordt uitgevoerd om de lokale bevolking van de methode te vertegenwoordigen. Het IDebugMethodField object wordt in dit CFieldProperty object geplaatst, samen met de IDebugSymbolProvider, IDebugAddressen IDebugBinder objecten.

  6. Wanneer het CFieldProperty-object wordt geïnitialiseerd, wordt GetInfo- aangeroepen op het IDebugMethodField object om een FIELD_INFO structuur op te halen die alle weergegeven informatie over de methode zelf bevat.

  7. IDebugExpressionEvaluator::GetMethodProperty retourneert het CFieldProperty-object als een IDebugProperty2-object.

  8. Visual Studio roept EnumChildren aan op het geretourneerde IDebugProperty2-object met het filter guidFilterLocalsPlusArgs, wat een IEnumDebugPropertyInfo2-object retourneert met de lokale variabelen van de methode. Deze opsomming wordt ingevuld door aanroepen naar EnumLocals en EnumArguments.

  9. Visual Studio roept Next aan om een DEBUG_PROPERTY_INFO structuur voor elke lokale locatie te verkrijgen. Deze structuur bevat een aanwijzer naar een IDebugProperty2-interface voor een lokale.

  10. Visual Studio roept GetPropertyInfo- aan voor elke lokale om de naam, waarde en het type van de lokale locatie op te halen. Deze informatie wordt weergegeven in het Locals venster.

In deze sectie

GetMethodProperty implementeren beschrijft een implementatie van GetMethodProperty.

Lokalen opsommen beschrijft hoe de foutopsporingsengine (DE) lokale variabelen of argumenten aanroept om op te sommen.

Lokale eigenschappen ophalen beschrijft hoe de DE een aanroep doet om de naam, het type en de waarde van een of meer lokalen op te halen.

Lokale waarden ophalen bespreekt het ophalen van de waarde van de lokale variabele, waarvoor de services van een binderobject vereist zijn, geleverd door de evaluatiecontext.

Lokale bevolking evalueren legt uit hoe de lokale bevolking wordt geëvalueerd.

Evaluatiecontext de argumenten bevat die worden doorgegeven wanneer de DE de expressie-evaluator (EE) aanroept.

MyCEE-voorbeeld demonstreert één implementatiebenadering voor het maken van een expressie-evaluator voor de MyC-taal.

Zie ook