Obliczanie wyrażenia okna zegarka
Ważne
W programie Visual Studio 2015 ten sposób implementowania ewaluatorów wyrażeń jest przestarzały. Aby uzyskać informacje na temat implementowania ewaluatorów wyrażeń CLR, zobacz clR expression evaluators and Managed expression evaluator sample (Przykład ewaluatora wyrażeń zarządzanych).
Po wstrzymaniu wykonywania program Visual Studio wywołuje aparat debugowania (DE), aby określić bieżącą wartość każdego wyrażenia na liście obserwowanych. Funkcja DE oblicza każde wyrażenie przy użyciu ewaluatora wyrażeń (EE), a program Visual Studio wyświetla jego wartość w oknie Obserwowanie .
Poniżej przedstawiono omówienie sposobu oceniania wyrażenia listy obserwowanych:
Program Visual Studio wywołuje obiekt GetExpressionContext DE, aby uzyskać kontekst wyrażenia, który może służyć do oceny wyrażeń.
Dla każdego wyrażenia na liście obserwowanych program Visual Studio wywołuje metodę ParseText , aby przekonwertować tekst wyrażenia na wyrażenie analizowane.
IDebugExpressionContext2::ParseText
wywołuje metodę Analizowanie, aby wykonać rzeczywistą pracę analizowania tekstu i utworzyć obiekt IDebugParsedExpression.IDebugExpressionContext2::ParseText
Tworzy obiekt IDebugExpression2 i umieszczaIDebugParsedExpression
go w nim. TenIDebugExpression2
obiekt jest następnie zwracany do programu Visual Studio.Program Visual Studio wywołuje metodę EvaluateSync , aby ocenić przeanalizowane wyrażenie.
IDebugExpression2::EvaluateSync
przekazuje wywołanie funkcji EvaluateSync w celu przeprowadzenia rzeczywistej oceny i utworzenia obiektu IDebugProperty2 zwróconego do programu Visual Studio.Program Visual Studio wywołuje metodę GetPropertyInfo , aby uzyskać wartość wyrażenia, które jest następnie wyświetlane na liście obserwowanych.
Analizowanie następnie ocenianie
Ponieważ analizowanie złożonego wyrażenia może trwać znacznie dłużej niż ocenianie go, proces obliczania wyrażenia jest podzielony na dwa kroki: 1) analizowanie wyrażenia i 2) obliczenie przeanalizowanego wyrażenia. W ten sposób ocena może wystąpić wiele razy, ale wyrażenie musi być analizowane tylko raz. Wyrażenie analizowane pośrednie jest zwracane z EE w obiekcie IDebugParsedExpression , który jest z kolei hermetyzowany i zwracany z DE jako obiekt IDebugExpression2 . Obiekt IDebugExpression
odchyli wszystkie oceny do IDebugParsedExpression
obiektu.
Uwaga
Nie jest konieczne, aby EE była zgodna z tym dwuetapowym procesem, mimo że program Visual Studio zakłada to; EE może analizować i oceniać w tym samym kroku, gdy funkcja EvaluateSync jest wywoływana (na przykład przykładowy kod MyCEE). Jeśli język może tworzyć złożone wyrażenia, możesz oddzielić krok analizy od kroku oceny. Może to zwiększyć wydajność debugera programu Visual Studio, gdy jest wyświetlanych wiele wyrażeń zegarka.
W tym obszarze
Przykładowa implementacja oceny wyrażeń używa przykładu MyCEE, aby przejść przez proces oceny wyrażeń.
Ocena wyrażenia zegarka wyjaśnia, co dzieje się po pomyślnym przeanalizowaniu wyrażenia.
Powiązana zawartość
Kontekst oceny zawiera argumenty przekazywane, gdy aparat debugowania (DE) wywołuje ewaluatora wyrażeń (EE).