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żny
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 ewaluatorów wyrażeń CLR i Przykład ewaluatora wyrażeń zarządzanych.
Poniżej przedstawiono omówienie sposobu pobierania ustawień lokalnych przez program Visual Studio dla metody z ewaluatora wyrażeń (EE):
Program Visual Studio wywołuje GetDebugProperty silnika debugowania (DE), aby uzyskać obiekt IDebugProperty2, który reprezentuje wszystkie właściwości ramki stosu, w tym zmienne lokalne.
IDebugStackFrame2::GetDebugPropertywywołuje GetMethodProperty, aby uzyskać obiekt opisujący metodę, w której wystąpił punkt przerwania. DE dostarcza dostawcę symboli (IDebugSymbolProvider), adres (IDebugAddress) i binder (IDebugBinder).IDebugExpressionEvaluator::GetMethodPropertywywołuje GetContainerField z podanym obiektemIDebugAddress, aby uzyskać IDebugContainerField, który reprezentuje metodę zawierającą określony adres.Interfejs
IDebugContainerFieldjest odpytyany dla interfejsu IDebugMethodField. Jest to ten interfejs, który zapewnia dostęp do ustawień lokalnych metody.IDebugExpressionEvaluator::GetMethodPropertytworzy wystąpienie klasy (nazywanejCFieldPropertyw przykładzie), która uruchamia interfejsIDebugProperty2do reprezentowania ustawień lokalnych metody. ObiektIDebugMethodFieldznajduje się w tym obiekcieCFieldPropertywraz z obiektamiIDebugSymbolProvider,IDebugAddressiIDebugBinder.Gdy obiekt
CFieldPropertyjest inicjowany, na obiekcieIDebugMethodFieldwywoływana jest funkcja GetInfo, aby uzyskać strukturę FIELD_INFO zawierającą wszystkie informacje, które można wyświetlić o samej metodzie.IDebugExpressionEvaluator::GetMethodPropertyzwraca obiektCFieldPropertyjako obiektIDebugProperty2.Program Visual Studio wywołuje EnumChildren na zwróconym obiekcie
IDebugProperty2za pomocą filtruguidFilterLocalsPlusArgs, który zwraca obiekt IEnumDebugPropertyInfo2 zawierający lokalne zmienne metody. Wyliczenie to jest wypełniane przez wywołania EnumLocals oraz EnumArguments.Program Visual Studio wywołuje Next w celu uzyskania struktury DEBUG_PROPERTY_INFO dla każdej zmiennej lokalnej. Ta struktura zawiera wskaźnik do interfejsu
IDebugProperty2dla lokalnego.Program Visual Studio wywołuje GetPropertyInfo dla każdej zmiennej lokalnej w celu uzyskania jej nazwy, wartości i typu. Te informacje są wyświetlane w oknie Locals.
W tej sekcji
Zaimplementuj właściwość GetMethodProperty opisuje implementację GetMethodProperty.
Wyliczanie lokalnych opisuje, jak aparat debugowania (DE) wykonuje wywołanie do wyliczenia zmiennych lokalnych lub argumentów.
Uzyskiwanie właściwości lokalnych opisuje, jak DE wykonuje wywołanie w celu uzyskania nazwy, typu i wartości jednej lub więcej zmiennych lokalnych.
Pobieranie wartości lokalnych omawia uzyskiwanie wartości lokalnej, która wymaga usług obiektu binder podanego przez kontekst oceny.
Evaluate locals (Ocena zmiennych lokalnych) wyjaśnia sposób oceny zmiennych lokalnych.
Powiązane sekcje
Kontekst ewaluacji udostępnia argumenty przekazywane, gdy DE wywołuje ewaluator wyrażeń (EE).
przykład MyCEE demonstruje jedno podejście do implementacji analizatora wyrażeń dla języka MyC.