Udostępnij przez


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 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:

  1. Program Visual Studio wywołuje obiekt GetExpressionContext DE, aby uzyskać kontekst wyrażenia, który może służyć do oceny wyrażeń.

  2. 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.

  3. IDebugExpressionContext2::ParseText wywołuje metodę Analizowanie , aby wykonać rzeczywistą pracę analizowania tekstu i utworzyć obiekt IDebugParsedExpression .

  4. IDebugExpressionContext2::ParseText Tworzy obiekt IDebugExpression2 i umieszcza obiekt IDebugParsedExpression w nim. Ten IDebugExpression2 obiekt jest następnie zwracany do programu Visual Studio.

  5. Program Visual Studio wywołuje metodę EvaluateSync , aby ocenić przeanalizowane wyrażenie.

  6. IDebugExpression2::EvaluateSync przekazuje wywołanie funkcji EvaluateSync w celu przeprowadzenia rzeczywistej oceny i utworzenia obiektu IDebugProperty2 zwróconego do programu Visual Studio.

  7. 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.