Typowy ewaluator wyrażeń — Funkcje
W temacie opisano różne funkcje programu Expression Evaluator, które są wspólne dla debugera, różnią się tylko językiem.
Zmienne niejawne
W językach Visual Basic i C# można utworzyć zmienne niejawne za pomocą modułu szacującego wyrażenie.Zmienne niejawne nigdy nie wykraczają poza zakres i mogą być traktowane jak każda inna zmienna.
W języku C# można utworzyć zmienną niejawną, deklarując ją w module szacującym wyrażenie.Na przykład, można wprowadzić następujący kod C# w oknie bezpośrednim:
int b = 100;
Kiedy użytkownik wykonuje ten kod w oknie bezpośrednim, nowa zmienna niejawna pojawia się w oknie zmiennych lokalnych ze znakiem $ przed nazwą zmiennej, w tym przypadku, $b.
W języku Visual Basic nie można zadeklarować zmiennych niejawnych w module szacującym wyrażenie.Jednakże jeśli użytkownik używa niezadeklarowanej zmiennej w module szacującym wyrażenie języka Visual Basic, zmienna niejawna jest tworzona automatycznie.W języku Visual Basic zmienne niejawne nie są wymienione w oknie zmiennych lokalnych.
Punkty przerwań
Użycie okna bezpośredniego do oszacowania metody lub funkcji języka Visual Basic lub C# zawierającej punkt przerwania sprawi, że punkt przerwania zostanie uruchomiony i na stosie wywołań pojawi się nowa ramka.Oto przykład C#:
class Program
{
static void Main(string[] args)
{
// Breakpoint here:
int a = 20;
}
}
Jeśli użytkownik ustawi punkt przerwania w miejscu, które wskazuje komentarz, a następnie skompiluje i wykona program naciskając klawisz F5, punkt przerwania zostanie uruchomiony w zwykły sposób.Jeśli użytkownik oszacuje metodę Main, wpisując Program.Main(null) do okna bezpośredniego, punkt przerwania zostanie uruchomiony po raz drugi i pojawi się wpis dla metody na stosie wywołań.
Ocena w oknie wyrażeń kontrolnych
Aby uniknąć niepożądanych efektów ubocznych, wywołanie funkcji lub metody nie jest automatycznie wykonywane przy każdym kroku debugera.Zamiast tego, ikona pozwala ręcznie zaktualizować wynik.Pojawia się w kolumnie wartości.Umożliwia to ręczne oszacowanie wywołania.Aby uzyskać więcej informacji, zobacz Skutki uboczne i wyrażenia.
Tożsamość obiektu
Funkcja nie jest dostępna dla Visual Basic.
Niektóre aplikacje tworzą wiele wystąpień klasy.W tych aplikacjach, często warto mieć identyfikator umożliwiający rozróżnienie danego wystąpienia klasy.Może to być przydatne, na przykład, jeśli określone wystąpienie klasy nie zachowuje się zgodnie z oczekiwaniami lub zostało wstawione więcej niż raz do kolekcji, która powinna zawierać tylko jedno wystąpienie.
Tożsamość obiektu macierzystego
Podczas debugowania kodu niezarządzanego, można jednoznacznie zidentyfikować obiekt przy użyciu jego adresu.Jest to ważne z dwóch powodów:
Obiekt można śledzić tylko przy użyciu jego adresu.Obejmuje to możliwość korzystania z adresu do:
Wyświetlenia wartości obiektu pod tym adresem.
Sprawdzenia równości.Adresu obiektu można często użyć w taki sam sposób, jak samą zmienną obiektu.
Adresu obiektu można użyć, aby ustawić punkt przerwania na metodzie w określonym wystąpieniu.
Na przykład, jeżeli użytkownik ma obiekt, który jest wystąpieniem klasy CMyType z adresem 0xcccccccc.Można określić punkt przerwania funkcji na metodzie aMethod tego wystąpienia w następujący sposób:
((CMyType *) 0xcccccccc)->aMethod
Tożsamość obiektu zarządzanego
Korzystając z kodu zarządzanego, nie można użyć adresu obiektu do jego identyfikacji.Zamiast tego, można użyć skojarzonej z obiektem wartości typu integer znanej jako identyfikator obiektu, który jest generowany przez usługi debugowania środowiska uruchomieniowego języka wspólnego (CLR).Identyfikator jest dodatnią liczbą całkowitą generowaną przez usługi debugowania CLR.Wartość identyfikatora obiektu nie ma znaczenia z wyjątkiem jednoznacznej identyfikacji obiektu.
Uchwyty obiektu są wyświetlane jako całkowite liczby dziesiętne o zmiennej długości, ze znakiem numeru (#) dołączonym po liczbie, bez żadnych wiodących zer, tak jak 5#.Uchwyty są wyświetlane w kolumnie wartości w różnych oknach danych debugera.
Aby utworzyć identyfikator obiektu dla zmiennej, kliknij prawym przyciskiem myszy zmienną i wybierz Utwórz identyfikator obiektu.Debugger wyświetli liczbę z dołączonym na końcu znakiem funta (#), jak np. 123#.Aby usunąć identyfikator obiektu, kliknij prawym przyciskiem myszy zmienną i wybierz Usuń identyfikator obiektu.
Gdy punkt przerwania zostaje uruchomiony, można wprowadzić uchwyt zmiennej do okna wyrażeń kontrolnych.Debugger wyświetla wartość identyfikatora obiektu, którą można rozwinąć i sprawdzić, podobnie jak wszystkie inne zmienne.
Aby ustawić punkt przerwania na metodzie konkretnego wystąpienia, należy użyć identyfikatora obiektu.Na przykład, załóżmy, że użytkownik ma obiekt, który jest instancją klasy CMyType, a wystąpienie ma identyfikator obiektu 5#.Klasa CMyType zawiera metodę aMethod.Punkt przerwania funkcji na metodzie aMethod wystąpienia 5# można ustawić w następujący sposób:
((CMyType) 5#).aMethod
Możliwe jest także użycie identyfikatora obiektu w warunku punktu przerwania.Poniższy przykład pokazuje, jak sprawdzić identyfikator obiektu w warunku.
this == 5#
Zobacz też
Koncepcje
Wyświetlanie danych w debugerze