Przykładowa implementacja ustawień lokalnych
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::GetDebugProperty
wywoł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::GetMethodProperty
wywołuje GetContainerField z podanym obiektemIDebugAddress
, aby uzyskać IDebugContainerField, który reprezentuje metodę zawierającą określony adres.Interfejs
IDebugContainerField
jest odpytyany dla interfejsu IDebugMethodField. Jest to ten interfejs, który zapewnia dostęp do ustawień lokalnych metody.IDebugExpressionEvaluator::GetMethodProperty
tworzy wystąpienie klasy (nazywanejCFieldProperty
w przykładzie), która uruchamia interfejsIDebugProperty2
do reprezentowania ustawień lokalnych metody. ObiektIDebugMethodField
znajduje się w tym obiekcieCFieldProperty
wraz z obiektamiIDebugSymbolProvider
,IDebugAddress
iIDebugBinder
.Gdy obiekt
CFieldProperty
jest inicjowany, na obiekcieIDebugMethodField
wywoływana jest funkcja GetInfo, aby uzyskać strukturę FIELD_INFO zawierającą wszystkie informacje, które można wyświetlić o samej metodzie.IDebugExpressionEvaluator::GetMethodProperty
zwraca obiektCFieldProperty
jako obiektIDebugProperty2
.Program Visual Studio wywołuje EnumChildren na zwróconym obiekcie
IDebugProperty2
za 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
IDebugProperty2
dla 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.