Udostępnij za pośrednictwem


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

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

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

  3. IDebugExpressionEvaluator::GetMethodProperty wywołuje GetContainerField z podanym obiektem IDebugAddress, aby uzyskać IDebugContainerField, który reprezentuje metodę zawierającą określony adres.

  4. Interfejs IDebugContainerField jest odpytyany dla interfejsu IDebugMethodField. Jest to ten interfejs, który zapewnia dostęp do ustawień lokalnych metody.

  5. IDebugExpressionEvaluator::GetMethodProperty tworzy wystąpienie klasy (nazywanej CFieldProperty w przykładzie), która uruchamia interfejs IDebugProperty2 do reprezentowania ustawień lokalnych metody. Obiekt IDebugMethodField znajduje się w tym obiekcie CFieldProperty wraz z obiektami IDebugSymbolProvider, IDebugAddressi IDebugBinder.

  6. Gdy obiekt CFieldProperty jest inicjowany, na obiekcie IDebugMethodField wywoływana jest funkcja GetInfo, aby uzyskać strukturę FIELD_INFO zawierającą wszystkie informacje, które można wyświetlić o samej metodzie.

  7. IDebugExpressionEvaluator::GetMethodProperty zwraca obiekt CFieldProperty jako obiekt IDebugProperty2.

  8. Program Visual Studio wywołuje EnumChildren na zwróconym obiekcie IDebugProperty2 za pomocą filtru guidFilterLocalsPlusArgs, który zwraca obiekt IEnumDebugPropertyInfo2 zawierający lokalne zmienne metody. Wyliczenie to jest wypełniane przez wywołania EnumLocals oraz EnumArguments.

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

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

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.

Zobacz też