Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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 ewaluatory wyrażeń CLR oraz 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::ParseTextwywołuje metodę Analizowanie , aby wykonać rzeczywistą pracę analizowania tekstu i utworzyć obiekt IDebugParsedExpression .IDebugExpressionContext2::ParseTextTworzy obiekt IDebugExpression2 i umieszcza obiektIDebugParsedExpressionw nim. TenIDebugExpression2obiekt jest następnie zwracany do programu Visual Studio.Program Visual Studio wywołuje metodę EvaluateSync , aby ocenić przeanalizowane wyrażenie.
IDebugExpression2::EvaluateSyncprzekazuje 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.
Analizuj, a następnie oceniaj
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 przekazuje wszystkie ewaluacje do obiektu IDebugParsedExpression.
Uwaga / Notatka
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 dziale
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.
Treści powiązane
Kontekst oceny zawiera argumenty przekazywane, gdy aparat debugowania (DE) wywołuje ewaluatora wyrażeń (EE).