Omówienie debugera platformy .NET w programie Visual Studio
W poprzedniej lekcji pokazano, że debuger pomaga kontrolować wykonywanie programu i obserwować jego stan. W tej sekcji dowiesz się, jak wykonywać oba te zadania w programie Visual Studio.
Zacznijmy od zapoznania się ze sposobem korzystania z debugera programu Visual Studio na platformie .NET.
Wprowadzenie do debugera programu Visual Studio
Użyj przycisku Start (zielonego trójkąta) na pasku poleceń programu Visual Studio, aby uruchomić aplikację z dołączonym debugerem. Zwróć uwagę, że pasek poleceń zawiera teraz nazwę naszego projektu. Po uruchomieniu aplikacji będzie dostępnych więcej narzędzi i funkcji debugowania.
- Konfiguracja rozwiązania określa, czy uruchamiać aplikację w trybie debugowania, czy wydania
- Konfiguracja platformy określa docelową platformę procesora CPU
- Uruchamia aplikację z dołączonym debugerem
- Uruchamia aplikację bez dołączonego debugera
Kontrolowanie wykonywania
Po uruchomieniu aplikacji kontrolki debugowania są wyświetlane obok klikniętego przycisku Uruchom , aby uruchomić aplikację.
- 1) Kontynuuj lub wstrzymaj wykonywanie. Jeśli wykonywanie jest wstrzymane w punkcie przerwania, wybierz ten przycisk, aby kontynuować do momentu osiągnięcia następnego punktu przerwania. Jeśli program jest uruchomiony, przycisk zamienia się na przycisk wstrzymania, przy użyciu którego można wstrzymać wykonywanie.
- 2) Funkcje przeładowania na gorąco. Ta funkcja, wprowadzona w programie Visual Studio 2022, umożliwia wprowadzanie zmian i odświeżanie kodu bez ponownego uruchamiania aplikacji.
- 3) Zatrzymaj. Ten przycisk zatrzymuje uruchomioną aplikację, co powoduje również odłączenie debugera.
- 4) Uruchom ponownie. Zatrzymuje i ponownie uruchomi aplikację za pomocą dołączonego debugera.
-
5) Wejdź. Jeśli następna instrukcja jest wywołaniem funkcji, przejdź w dół do pierwszej instrukcji kodu tej funkcji (takiej samej jak
steppolecenie). - 6) Krok do kroku. Jeśli następna instrukcja jest wywołaniem funkcji, wykonaj kod, ale przejdź natychmiast do następnego wiersza kodu w bieżącej funkcji.
-
7) Wyjście. Jeśli jesteś wewnątrz funkcji, wykonaj pozostały kod tej funkcji i wróć do instrukcji po początkowym wywołaniu funkcji (tak samo jak
outpolecenie).
Punkty przerwania są jedną z podstawowych funkcji debugowania i integrują się z tymi kontrolkami, więc przyjrzyjmy się im bardziej szczegółowo.
Punkty przerwania
Jak pokazano w poprzedniej lekcji, debuger pomaga analizować i kontrolować wykonywanie programu. Po uruchomieniu aplikacji z dołączonym debugerem programu Visual Studio kod natychmiast zacznie działać. Ponieważ kod jest wykonywany szybko, musisz mieć możliwość wstrzymania programu na poziomie dowolnej instrukcji. W tym celu należy użyć punktów przerwania .
Punkt przerwania można dodać w programie Visual Studio, klikając lewą stronę numeru wiersza w wierszu, który chcesz przerwać. Gdy punkt przerwania zostanie włączony, powinno być widoczne czerwone kółko. Aby go usunąć, wybierz ponownie czerwone kółko.
Jeśli klikniesz prawym przyciskiem myszy, aby dodać punkt przerwania lub kliknij prawym przyciskiem myszy istniejący punkt przerwania, możesz również wybrać pozycję Dodaj warunkowy punkt przerwania. Ten specjalny typ punktu przerwania umożliwia zdefiniowanie warunku lub kryteriów, które określają moment wyzwolenia punktu przerwania. To menu umożliwia również wybranie opcji Włącz tylko wtedy, gdy następujący punkt przerwania zostanie osiągnięty, aby stworzyć możliwość łączenia punktów przerwania w łańcuch, wraz z innymi działaniami.
Możesz również użyć tymczasowego punktu przerwania , jeśli chcesz przerwać kod tylko raz. Tymczasowe punkty przerwania można zastosować, klikając prawym przyciskiem myszy w kolumnie punktu przerwania i wybierając polecenie Wstaw tymczasowy punkt przerwania. Tymczasowe punkty przerwania zostaną usunięte po pierwszym trafieniu.
Punkty śledzenia można również dodać, klikając prawym przyciskiem myszy w kolumnie punktu przerwania i wybierając polecenie Wstaw punkt śledzenia. Punkty śledzenia umożliwiają rejestrowanie informacji w oknie Dane wyjściowe w konfigurowalnych warunkach bez modyfikowania lub zatrzymywania wykonywania kodu.
Na koniec w oknie Punkty przerwania (Debugowanie>Windows>Punkty przerwania) możesz zobaczyć i przełączyć wszystkie punkty przerwania umieszczone w kodzie. Można także przełączać opcje, aby przerywać na przechwyconych lub nieprzechwyconych wyjątkach. Możesz użyć panelu Punktów przerwania, aby zbadać stan programu i wykryć źródło wyjątku przy użyciu stosu wywołań gdy wystąpi.
Narzędzia debugowania programu Visual Studio
Po skonfigurowaniu punktów przerwania i uruchomieniu aplikacji na ekranie pojawią się nowe okna informacyjne i kontrolki.
- Kontrole uruchamiania debugera.
- Bieżący punkt przerwania i wiersz wykonywania.
- Okno kontrolne dotyczące monitorowania wartości zmiennych.
- Okno punktów przerwania do wyświetlania wszystkich punktów przerwania.
Możesz również uzyskać dostęp do innych przydatnych okien debugowania, wybierając pozycję Debuguj>system Windows na górnym pasku nawigacyjnym. Na przykład często używane narzędzia to:
- Okno stosu wywołań: umożliwia wyświetlenie, które metody zostały wywołane.
- Okno natychmiastowe: umożliwia pisanie i ocenianie wyrażeń podczas debugowania.
- Okno Automatyczne: automatycznie dodaje zegarki do zmiennych w bieżącym kontekście.
- Okno danych wyjściowych: wyświetla dane wyjściowe instrukcji logowania lub kodu, który zapisuje w konsoli programu.
Obserwowanie i edytowanie stanu zmiennych
Podczas analizowania przyczyny wady programu można obserwować stan zmiennych, aby wyszukać nieoczekiwane zmiany. W programie Visual Studio dostępnych jest wiele opcji okien kontrolnych, których można używać w różnych kontekstach debugowania do monitorowania stanu zmiennych.
- Okno kontrolne: umożliwia śledzenie wybranych zmiennych i wyrażeń w czasie podczas debugowania.
- Okno Ustawienia lokalne: automatycznie wyświetla zmienne w bieżącym zakresie wykonywania i kontekście.
- Okno Autos: Automatycznie wyświetla dowolną zmienną używaną w aktualnie wykonywanym lub poprzedzającym wierszu.
- Okno natychmiastowe: umożliwia ocenę wyrażeń i zmiennych na żywo podczas debugowania.
Większość tych okien umożliwia również dwukrotne kliknięcie wartości zmiennej i zmianę jej wartości podczas debugowania.
Okno Obserwowanie jest przydatne do śledzenia zmiennych podczas wykonywania kodu. Możesz kliknąć prawym przyciskiem myszy zmienną w edytorze i wybrać polecenie Dodaj, aby obejrzeć. Ta zmienna jest teraz wyświetlana w oknie zegarka i jest aktualizowana automatycznie podczas wykonywania aplikacji.
Możesz również kliknąć prawym przyciskiem myszy zmienne w oknach Autos lub Locals , aby dodać zegarek.
Innym produktywnym sposobem wyświetlania i analizowania informacji o zmiennej podczas debugowania jest użycie etykietek danych. Po wstrzymaniu w punkcie przerwania umieść kursor na dowolnej zmiennej w bieżącym zakresie. Zostanie wyświetlona etykietka danych z nazwą i bieżącą wartością właściwości zmiennej. Po umieszczeniu wskaźnika myszy na parametrze funkcji lub zmiennej bezpośrednio w oknie edytora można również zajrzeć do jego wartości.
Stos wywołań
Za każdym razem, gdy program wywołuje funkcję, do stosu wywołań jest dodawany wpis. Gdy aplikacja staje się złożona, a funkcje są wywoływane w innych funkcjach wiele razy, stos wywołań reprezentuje ślad tych wywołań.
Przydatne jest znalezienie źródła wyjątku. Jeśli w programie występuje nieoczekiwana awaria, często widzisz coś w konsoli, jak w poniższym przykładzie:
Unhandled exception. System.IndexOutOfRangeException: Index was outside the bounds of the array.
at OrderProcessor.OrderQueue.ProcessNewOrders(String[] orderIds) in C:\Users\Repos\OrderProcessor\OrderQueue.cs:line 12
at OrderProcessor.Program.Main(String[] args) in C:\Users\Repos\OrderProcessor\Program.cs:line 9
Grupa wierszy at [...] pod komunikatem o błędzie jest nazywana śladem stosu . Ślad stosu zawiera nazwę i źródło każdej funkcji, która została wywołana przed zakończeniem z wyjątkiem. Jednak może to być nieco trudne do odszyfrowania, ponieważ obejmuje również funkcje wewnętrzne ze środowiska uruchomieniowego platformy .NET.
Okno stosu wywołań programu Visual Studio przydaje się tutaj. Odfiltrowuje on niechciane informacje, aby pokazać tylko istotne funkcje z Twojego własnego kodu. Następnie możesz cofnąć ten stos wywołań, aby dowiedzieć się, skąd pochodzi wyjątek.
W następnej lekcji przeprowadzisz ćwiczenie przy użyciu debugera, aby naprawić usterkę w kodzie Fibonacciego, który widzieliśmy wcześniej.
Określanie ustawień debugera
W programie Visual Studio można określić różne ustawienia zachowania debugera. W tym, jak są wyświetlane zmienne, czy są wyświetlane określone ostrzeżenia, jak ustawiane są punkty przerwania i jak wpływa to na uruchomione programy. Możesz również skonfigurować projekt do kompilacji jako konfiguracji debugowania lub wydania.
Aby skonfigurować ustawienia debugera, użyj menu Narzędzia>Opcje>debugowania , które udostępnia różne kategorie opcji. Najbardziej typowe opcje znajdują się w kategorii Ogólne .