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.
Ewaluatory wyrażeń (EE) badają składnię języka do analizowania i oceniania zmiennych i wyrażeń w czasie wykonywania, co pozwala na wyświetlanie ich przez użytkownika, gdy środowisko IDE jest w trybie przerwania.
Używanie ewaluatorów wyrażeń
Wyrażenia są tworzone przy użyciu metody ParseText w następujący sposób:
Aparat debugowania (DE) implementuje interfejs IDebugExpressionContext2 .
Pakiet debugowania pobiera obiekt
IDebugExpressionContext2z interfejsu IDebugStackFrame2, a następnie wywołuje na nim metodęIDebugStackFrame2::ParseText, aby uzyskać obiekt IDebugExpression2.Pakiet debugowania wywołuje metodę EvaluateSync lub metodę EvaluateAsync , aby uzyskać wartość wyrażenia.
IDebugExpression2::EvaluateAsyncjest wywoływana z okna Komendy/Bezpośrednie. Wszystkie inne składniki interfejsu użytkownika wywołają metodęIDebugExpression2::EvaluateSync.Wynikiem oceny wyrażenia jest obiekt IDebugProperty2 , który zawiera nazwę, typ i wartość wyniku oceny wyrażenia.
Podczas obliczania wyrażenia EE wymaga informacji ze składnika dostawcy symboli. Dostawca symboli dostarcza informacje symboliczne używane do identyfikowania i zrozumienia przeanalizowanego wyrażenia.
Po zakończeniu oceny wyrażeń asynchronicznych, przez DE za pośrednictwem menedżera debugowania sesji (SDM) jest wysyłane zdarzenie asynchroniczne w celu powiadomienia środowiska IDE, że ocena wyrażeń jest ukończona. Następnie wynik oceny jest zwracany z wywołania metody
IDebugExpression2::EvaluateSync.
Uwagi dotyczące implementacji
Silniki debugowania Visual Studio oczekują komunikacji z ewaluatorem wyrażeń przy użyciu interfejsów środowiska Common Language Runtime (CLR). W związku z tym ewaluator wyrażeń, który współpracuje z aparatami debugowania programu Visual Studio, musi obsługiwać środowisko CLR (pełną listę wszystkich interfejsów debugowania CLR można znaleźć w debugref.doc, który jest częścią zestawu Windows Software Development Kit (SDK)).