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):
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.
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).IDebugExpressionEvaluator::GetMethodProperty
roept GetContainerField- aan met het opgegevenIDebugAddress
-object om een IDebugContainerField- op te halen die de methode vertegenwoordigt die het opgegeven adres bevat.De
IDebugContainerField
-interface wordt opgevraagd voor de interface IDebugMethodField. Het is deze interface die toegang geeft tot de lokalen van de methode.IDebugExpressionEvaluator::GetMethodProperty
instantieert een klasse (CFieldProperty
genoemd in het voorbeeld) waarmee deIDebugProperty2
-interface wordt uitgevoerd om de lokale bevolking van de methode te vertegenwoordigen. HetIDebugMethodField
object wordt in ditCFieldProperty
object geplaatst, samen met deIDebugSymbolProvider
,IDebugAddress
enIDebugBinder
objecten.Wanneer het
CFieldProperty
-object wordt geïnitialiseerd, wordt GetInfo- aangeroepen op hetIDebugMethodField
object om een FIELD_INFO structuur op te halen die alle weergegeven informatie over de methode zelf bevat.IDebugExpressionEvaluator::GetMethodProperty
retourneert hetCFieldProperty
-object als eenIDebugProperty2
-object.Visual Studio roept EnumChildren aan op het geretourneerde
IDebugProperty2
-object met het filterguidFilterLocalsPlusArgs
, wat een IEnumDebugPropertyInfo2-object retourneert met de lokale variabelen van de methode. Deze opsomming wordt ingevuld door aanroepen naar EnumLocals en EnumArguments.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.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.
Verwante secties
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.