Delen via


Expressies evalueren

Expressies worden gemaakt op basis van tekenreeksen die zijn doorgegeven vanuit de vensters Autos, Watch, QuickWatch of Immediate . Wanneer een expressie wordt geƫvalueerd, wordt er een afdrukbare tekenreeks gegenereerd die de naam en het type variabele of het argument en de bijbehorende waarde bevat. Deze tekenreeks wordt weergegeven in het bijbehorende IDE-venster.

Implementation

Expressies worden geƫvalueerd wanneer een programma is gestopt op een onderbrekingspunt. De expressie zelf wordt vertegenwoordigd door een IDebugExpression2-interface , die een geparseerde expressie vertegenwoordigt die gereed is voor binding en evaluatie binnen de opgegeven context van de expressie-evaluatie. Het stackframe bepaalt de context van de expressie-evaluatie, die de foutopsporingsengine (DE) levert door de IDebugExpressionContext2-interface te implementeren.

Op basis van een gebruikerstekenreeks en een IDebugExpressionContext2-interface kan een debug engine (DE) een IDebugExpression2-interface verkrijgen door de gebruikersreeks door te geven aan de methode IDebugExpressionContext2::P arseText . De IDebugExpression2-interface die wordt geretourneerd, bevat de geparseerde expressie die gereed is voor evaluatie.

Met de IDebugExpression2 interface kan de DE de waarde van de expressie ophalen via synchrone of asynchrone expressie-evaluatie, met behulp van IDebugExpression2::EvaluateSync of IDebugExpression2::EvaluateAsync. Deze waarde, samen met de naam en het type van de variabele of het argument, wordt verzonden naar de IDE voor weergave. De waarde, naam en het type worden vertegenwoordigd door een IDebugProperty2-interface .

Als u de expressie-evaluatie wilt inschakelen, moet een DE debugExpression2 - en IDebugExpressionContext2-interfaces implementeren. Zowel synchrone als asynchrone evaluatie vereisen de implementatie van de methode IDebugProperty2::GetPropertyInfo .