Najpierw przyjrzyj się debugerowi programu Visual Studio

Dotyczy:takprogramu Visual Studio nie Visual Studio dla komputerów Mac nie Visual Studio Code

W tym temacie przedstawiono narzędzia debugera udostępniane przez program Visual Studio. W kontekście programu Visual Studio podczas debugowania aplikacji zwykle oznacza to, że uruchamiasz aplikację z dołączonym debugerem (czyli w trybie debugera). Gdy to zrobisz, debuger udostępnia wiele sposobów, aby zobaczyć, co robi kod podczas jego uruchamiania. Możesz przejść przez kod i przyjrzeć się wartościom przechowywanym w zmiennych. Możesz ustawić zegarki na zmiennych, aby zobaczyć, kiedy wartości się zmieniają, możesz zbadać ścieżkę wykonywania kodu itd. Jeśli po raz pierwszy próbowano debugować kod, warto przeczytać debugowanie dla początkujących, zanim przejdziesz do tego tematu.

Opisane tutaj funkcje mają zastosowanie do języków C#, C++, Visual Basic, JavaScript i innych obsługiwanych przez program Visual Studio (z wyjątkiem przypadków, w których odnotowano).

Ustawianie punktu przerwania i uruchamianie debugera

Punkty przerwania to przydatna funkcja, gdy znasz wiersz kodu lub sekcję kodu, którą chcesz szczegółowo zbadać w czasie wykonywania. Aby uzyskać więcej informacji na temat różnych typów punktów przerwania, takich jak warunkowe punkty przerwania i punkty przerwania funkcji, zobacz Używanie punktów przerwania.

Aby debugować, musisz uruchomić aplikację przy użyciu debugera dołączonego do procesu aplikacji. W tym celu:

  • Naciśnij klawisz F5 (Debuguj rozpocznij debugowanie debugowania>), która jest najczęstszą metodą.

Jednak w tej chwili możesz nie ustawić żadnych punktów przerwania w celu zbadania kodu aplikacji, więc najpierw to zrobimy, a następnie uruchomimy debugowanie. Punkty przerwania to najbardziej podstawowa i niezbędna funkcja niezawodnego debugowania. Punkt przerwania wskazuje, gdzie program Visual Studio powinien zawiesić uruchomiony kod, aby można było przyjrzeć się wartościom zmiennych lub zachowaniu pamięci, czy też niezależnie od tego, czy gałąź kodu jest uruchamiana.

Jeśli plik jest otwarty w edytorze kodu, możesz ustawić punkt przerwania, klikając margines po lewej stronie wiersza kodu.

Ustawianie punktu przerwania — ustawianie punktu

Ustawianie punktu przerwania — ustawianie punktu

Naciśnij klawisz F5 (Debuguj rozpocznij debugowanie) >lub przycisk Rozpocznij debugowanie Rozpocznij debugowanie na pasku narzędzi debugowania, a debuger jest uruchamiany w pierwszym punkcie przerwania, który napotka. Jeśli aplikacja nie jest jeszcze uruchomiona, klawisz F5 uruchamia debuger i zatrzymuje się w pierwszym punkcie przerwania.

Udostępniamy skróty klawiaturowe dla większości poleceń, ponieważ ułatwiają nawigację po kodzie aplikacji. (Równoważne polecenia, takie jak polecenia menu, są wyświetlane w nawiasach). Aby uzyskać więcej informacji na temat korzystania z poleceń kroków, zobacz Navigate code in the debugger (Nawigowanie po kodzie w debugerze).

Aby uruchomić aplikację przy użyciu dołączonego debugera, naciśnij klawisz F11 (Debuguj > krok do). F11 to polecenie Krok do i postęp wykonywania aplikacji po jednej instrukcji naraz. Po uruchomieniu aplikacji przy użyciu klawisza F11 debuger przerywa wykonywanie pierwszej instrukcji.

F11 Krok do F11

F11 Krok do F11

Żółta strzałka reprezentuje instrukcję, na której wstrzymano debuger, który również zawiesza wykonywanie aplikacji w tym samym punkcie (ta instrukcja nie została jeszcze wykonana).

F11 to dobry sposób na zbadanie przepływu wykonywania w najbardziej szczegółowy sposób. (Aby przyspieszyć przechodzenie przez kod, pokażemy również inne opcje). Domyślnie debuger pomija kod inny niż użytkownik (jeśli chcesz uzyskać więcej szczegółów, zobacz Tylko mój kod).

Uwaga

W kodzie zarządzanym zostanie wyświetlone okno dialogowe z pytaniem, czy chcesz otrzymywać powiadomienia, gdy automatycznie przejdziesz do właściwości i operatorów (zachowanie domyślne). Jeśli chcesz później zmienić ustawienie, wyłącz ustawienie Właściwości i operatory krok po kroku w menu Opcje narzędzi > w obszarze Debugowanie.

Przechodzenie do kodu w celu pominięcia funkcji

Gdy jesteś w wierszu kodu, który jest wywołaniem funkcji lub metody, możesz nacisnąć klawisz F10 (Debuguj > krok powyżej) zamiast F11.

Klawisz F10 rozwija debuger bez przechodzenia do funkcji lub metod w kodzie aplikacji (kod nadal jest wykonywany). Naciskając klawisz F10, możesz pominąć kod, którego nie interesujesz. Dzięki temu możesz szybko uzyskać kod, który cię interesuje. Aby uzyskać więcej informacji na temat korzystania z poleceń kroków, zobacz Navigate code in the debugger (Nawigowanie po kodzie w debugerze).

Szybkie uruchamianie do punktu w kodzie przy użyciu myszy

Użycie przycisku Uruchom do kliknięcia przypomina ustawienie tymczasowego punktu przerwania. To polecenie jest również przydatne do szybkiego poruszania się w widocznym regionie kodu aplikacji. Możesz użyć polecenia Uruchom, aby kliknąć dowolny otwarty plik. Aby uzyskać więcej informacji na temat tej funkcji i podobnych funkcji nawigacji, zobacz Uruchamianie do określonej lokalizacji w kodzie.

W debugerze umieść wskaźnik myszy na wierszu kodu, aż do przycisku Uruchom do kliknięcia (uruchom wykonanie do tutaj) zrzut ekranu przedstawiający przycisk Uruchom do kliknięcia z debugera programu Visual Studio. Przycisk wskazuje, że wykonanie powinno zostać uruchomione w wierszu, w którym znajduje się przycisk. pojawia się po lewej stronie.

Zrzut ekranu przedstawiający debuger programu Visual Studio przedstawiający przycisk Uruchom do kliknięcia wyświetlany tylko po lewej stronie wywołania funkcji.

Zrzut ekranu przedstawiający debuger programu Visual Studio przedstawiający przycisk Uruchom do kliknięcia wyświetlany tylko po lewej stronie wywołania funkcji.

Uwaga

Przycisk Uruchom do kliknięcia (uruchom wykonanie do tutaj) jest dostępny od programu Visual Studio 2017.

Kliknij przycisk Uruchom, aby kliknąć (uruchom wykonanie w tym miejscu). Debuger przechodzi do wiersza kodu, w którym kliknięliśmy.

Przechodzenie debugera z bieżącej funkcji

Czasami możesz kontynuować sesję debugowania, ale przejść do debugera przez całą bieżącą funkcję.

Naciśnij klawisze Shift + F11 (lub debuguj > wyjście).

To polecenie wznawia wykonywanie aplikacji (i zwiększa debuger), dopóki bieżąca funkcja nie zostanie zwrócona.

Uruchamianie do kursora

Podczas edytowania kodu (zamiast wstrzymywania w debugerze) kliknij prawym przyciskiem myszy wiersz kodu w aplikacji i wybierz polecenie Uruchom do kursora (lub naciśnij klawisze Ctrl na F10). To polecenie uruchamia debugowanie i ustawia tymczasowy punkt przerwania w bieżącym wierszu kodu. Aby uzyskać więcej informacji na temat tej funkcji i podobnych funkcji nawigacji, zobacz Uruchamianie do określonej lokalizacji w kodzie.

Uruchamianie do kursora do kursora

Uruchamianie do kursora do kursora

Jeśli ustawiono punkty przerwania, debuger wstrzymuje się w pierwszym punkcie przerwania, który zostanie trafiony.

Naciśnij klawisz F5 , dopóki nie osiągniesz wiersza kodu, w którym wybrano pozycję Uruchom do kursora.

To polecenie jest przydatne podczas edytowania kodu i chcesz szybko ustawić tymczasowy punkt przerwania i uruchomić debuger w tym samym czasie.

Uwaga

Podczas debugowania możesz użyć polecenia Uruchom do kursora w oknie stosu wywołań .

Szybkie ponowne uruchamianie aplikacji

Kliknij przycisk Uruchom ponownie aplikację Uruchom ponownie aplikację na pasku narzędzi debugowania (lub naciśnij klawisze Ctrl + Shift + F5).

Po naciśnięciu przycisku Uruchom ponownie oszczędza czas w porównaniu z zatrzymywaniem aplikacji i ponownym uruchamianiem debugera. Debuger wstrzymuje się w pierwszym punkcie przerwania, który zostanie trafiony przez wykonanie kodu.

Jeśli chcesz zatrzymać debuger i wrócić do edytora kodu, możesz nacisnąć czerwony przycisk Zatrzymaj debugowanie debugowania zamiast Uruchom ponownie.

Edytowanie kodu na żywo

Program Visual Studio 2022 obsługuje edytowanie kodu na żywo podczas debugowania. Aby uzyskać szczegółowe informacje, zobacz:

Edytuj kod i kontynuuj debugowanie (C#, VB, C++, XAML)

W większości języków obsługiwanych przez program Visual Studio można edytować kod w trakcie sesji debugowania i kontynuować debugowanie. Aby użyć tej funkcji, kliknij kod z kursorem podczas wstrzymania w debugerze, wprowadź zmiany i naciśnij klawisz F5, F10 lub F11 , aby kontynuować debugowanie. Aby uzyskać więcej informacji na temat korzystania z tej funkcji i ograniczeń funkcji, zobacz Edytowanie i kontynuuj.

Edytuj i kontynuuj debugowanie

Aby zmodyfikować kod XAML podczas sesji debugowania, zobacz Pisanie i debugowanie uruchomionego kodu XAML przy użyciu Przeładowywanie na gorąco XAML.

Sprawdzanie zmiennych za pomocą porad dotyczących danych

Teraz, gdy już wiesz, jak trochę się obejść, możesz rozpocząć inspekcję stanu aplikacji (zmiennych) za pomocą debugera. Funkcje, które umożliwiają inspekcję zmiennych, to niektóre z najbardziej przydatnych funkcji debugera i istnieją różne sposoby ich wykonania. Często podczas próby debugowania problemu próbujesz dowiedzieć się, czy zmienne przechowują wartości, których oczekujesz, że będą miały określony stan aplikacji. Aby uzyskać szczegółowe informacje na temat korzystania z porad dotyczących danych, zobacz Wyświetlanie wartości danych w poradach dotyczących danych.

Podczas wstrzymania w debugerze umieść kursor nad obiektem myszy i zobaczysz jego wartość lub jego wartość domyślną.

Wyświetlanie porad dotyczących danych — wyświetl poradę

Wyświetlanie porad dotyczących danych — wyświetl poradę

Jeśli zmienna ma właściwości, możesz rozwinąć obiekt, aby wyświetlić wszystkie jego właściwości.

Często podczas debugowania chcesz szybko sprawdzić wartości właściwości w obiektach, a porady dotyczące danych są dobrym sposobem na to.

Porada

W większości obsługiwanych języków można edytować kod w trakcie sesji debugowania. Aby uzyskać więcej informacji, zobacz Edytowanie i kontynuuj.

Sprawdzanie zmiennych za pomocą okien Autos i Locals

W oknie Automatyczne są widoczne zmienne wraz z ich bieżącą wartością i ich typem. W oknie Autos (Autos ) są wyświetlane wszystkie zmienne używane w bieżącym wierszu lub poprzednim wierszu (w języku C++w oknie są wyświetlane zmienne w poprzednich trzech wierszach kodu). Sprawdź dokumentację pod kątem zachowania specyficznego dla języka). Aby uzyskać więcej informacji na temat korzystania z tych okien, zobacz Inspekcja zmiennych w oknach Autos i Locals.

Podczas debugowania przyjrzyj się oknie Autos w dolnej części edytora kodu.

Okno Autos window autos ()

Okno Autos window autos ()

Uwaga

W języku JavaScript okno Ustawienia lokalne jest obsługiwane, ale nie w oknie Autos .

Następnie przyjrzyj się oknie Ustawienia lokalne . W oknie Ustawienia lokalne są wyświetlane zmienne, które są obecnie w zakresie.

Okno Ustawienia lokalne

Okno Ustawienia lokalne

W tym przykładzie this obiekt i obiekt f znajdują się w zakresie. Aby uzyskać więcej informacji, zobacz Inspekcja zmiennych w systemie Windows autos i zmiennych lokalnych.

Ustawianie zegarka

Możesz użyć okna Czujka , aby określić zmienną (lub wyrażenie), którą chcesz mieć na bieżąco. Aby uzyskać szczegółowe informacje, zobacz Set a Watch using the Watch and QuickWatch Windows (Ustawianie zegarka przy użyciu zegarka i systemu Windows QuickWatch).

Podczas debugowania kliknij prawym przyciskiem myszy obiekt i wybierz polecenie Dodaj zegarek.

Okno czujki

Okno czujki

W tym przykładzie masz ustawiony zegarek na obiekcie i możesz zobaczyć jego zmianę wartości podczas przechodzenia przez debuger. W przeciwieństwie do innych okien zmiennych, okna wyrażeń kontrolnych zawsze wyświetlają obserwowane zmienne (są wyszarywane w przypadku braku zakresu).

Badanie stosu wywołań

W oknie Stos wywołań jest wyświetlana kolejność wywoływania metod i funkcji. Górny wiersz pokazuje bieżącą funkcję. Drugi wiersz pokazuje funkcję lub właściwość, z którego została wywołana itd. Stos wywołań to dobry sposób na zbadanie i zrozumienie przepływu wykonywania aplikacji. Aby uzyskać szczegółowe informacje, zobacz How to: Examine the Call Stack (Instrukcje: badanie stosu wywołań).

Uwaga

Okno Stos wywołań jest podobne do perspektywy debugowania w niektórych środowiskach IDE, takich jak Eclipse.

Kliknij okno Stos wywołań podczas debugowania, które jest domyślnie otwarte w prawym dolnym okienku.

Badanie

Badanie

Możesz kliknąć dwukrotnie wiersz kodu, aby przyjrzeć się temu kodowi źródłowemu, a także zmienić bieżący zakres sprawdzany przez debuger. Nie powoduje to postępu debugera.

Możesz również użyć menu prawym przyciskiem myszy w oknie stosu wywołań , aby wykonać inne czynności. Możesz na przykład wstawić punkty przerwania do określonych funkcji, ponownie uruchomić aplikację przy użyciu polecenia Uruchom do kursora i przejść do analizy kodu źródłowego.

Sprawdzanie wyjątku

Gdy aplikacja zgłosi wyjątek, debuger przeniesie Cię do wiersza kodu, który zgłosił wyjątek. Aby uzyskać szczegółowe informacje, zobacz Inspekcja wyjątku przy użyciu pomocnika wyjątków.

Pomocnik wyjątków pomocnika wyjątków

W tym przykładzie pomocnik wyjątków pokazuje System.NullReferenceException wyjątek i komunikat o błędzie informujący, że odwołanie do obiektu nie jest ustawione na wystąpienie obiektu. I informuje nas, że wartość ciągu miała wartość null podczas próby wywołania Trim metody.

Pomocnik wyjątków pomocnika wyjątków

W tym przykładzie pomocnik wyjątków pokazuje System.Argument wyjątek i komunikat o błędzie informujący, że ścieżka nie jest formą prawną. W związku z tym wiemy, że wystąpił błąd w metodzie lub argumencie funkcji.

W tym przykładzie DirectoryInfo wywołanie dało błąd w pustym ciągu przechowywanym w zmiennej value .

Pomocnik wyjątków to świetna funkcja, która może ułatwić debugowanie błędów. Możesz również wykonywać takie czynności, jak wyświetlanie szczegółów błędu i dodawanie zegarka z pomocnika wyjątków. W razie potrzeby można również zmienić warunki zgłaszania określonego wyjątku. Aby uzyskać więcej informacji na temat obsługi wyjątków w kodzie, zobacz Debugowanie technik i narzędzi.

Rozwiń węzeł Ustawienia wyjątków , aby wyświetlić więcej opcji obsługi tego typu wyjątku, ale nie musisz nic zmieniać w tym przewodniku!

Konfigurowanie debugowania

Projekt można skonfigurować tak, aby kompilować jako konfigurację debugowania lub wydawania, konfigurować właściwości projektu na potrzeby debugowania lub konfigurować ustawienia ogólne na potrzeby debugowania. Ponadto można skonfigurować debuger do wyświetlania niestandardowych informacji przy użyciu funkcji, takich jak atrybut DebuggerDisplay lub, dla języka C/C++, struktury NatVis.

Właściwości debugowania są specyficzne dla każdego typu projektu. Na przykład można określić argument, który ma być przekazywany do aplikacji podczas jej uruchamiania. Aby uzyskać dostęp do właściwości specyficznych dla projektu, kliknij prawym przyciskiem myszy projekt w Eksplorator rozwiązań i wybierz polecenie Właściwości. Właściwości debugowania są zwykle wyświetlane na karcie Kompilacja lub Debugowanie w zależności od określonego typu projektu.

Począwszy od programu Visual Studio 2022, karta Debugowanie dla projektów .NET udostępnia link do interfejsu użytkownika profilów uruchamiania debugowania, w którym można ustawić właściwości związane z debugowaniem.

Właściwości projektu Właściwości projektu

Właściwości projektu Właściwości projektu

Debugowanie aplikacji ASP.NET na żywo w usłudze Azure App Service

Aby debugować w Azure App Service, zobacz Debugowanie aplikacji platformy Azure.

W przypadku Visual Studio Enterprise (tylko) narzędzie Snapshot Debugger tworzy migawkę aplikacji w środowisku produkcyjnym, gdy kod, który cię interesuje. Aby poinstruować debugera o utworzeniu migawki, należy ustawić punkty przyciągania i punkty rejestrowania w kodzie. Debuger pozwala zobaczyć dokładnie, co poszło nie tak, bez wpływu na ruch aplikacji produkcyjnej. Debuger migawek może pomóc znacznie skrócić czas rozwiązywania problemów występujących w środowiskach produkcyjnych.

Uruchamianie debugera migawek Uruchamianie

Kolekcja migawek jest dostępna dla aplikacji ASP.NET działających w Azure App Service. ASP.NET aplikacje muszą być uruchomione w wersji .NET Framework 4.6.1 lub nowszej, a aplikacje ASP.NET Core muszą być uruchomione na platformie .NET Core 2.0 lub nowszej w systemie Windows.

Aby uzyskać więcej informacji, zobacz Debugowanie aplikacji na żywo ASP.NET przy użyciu narzędzia Snapshot Debugger.

Wyświetlanie migawek za pomocą funkcji IntelliTrace krok do tyłu (Visual Studio Enterprise)

Funkcja IntelliTrace automatycznie tworzy migawkę aplikacji w każdym punkcie przerwania i zdarzeniu kroku debugera. Zarejestrowane migawki umożliwiają powrót do poprzednich punktów przerwania lub kroków i wyświetlenie stanu aplikacji w przeszłości. Funkcja IntelliTrace może zaoszczędzić czas, gdy chcesz zobaczyć poprzedni stan aplikacji, ale nie chcesz ponownie uruchomić debugowania ani ponownie utworzyć żądanego stanu aplikacji.

Migawki można przeglądać i przeglądać za pomocą przycisków Krok do tyłu i Krok do przodu na pasku narzędzi Debugowanie. Te przyciski umożliwiają nawigowanie po zdarzeniach wyświetlanych na karcie Zdarzenia w oknie Narzędzia diagnostyczne .

Przyciski Do tyłu i Do przodu

Aby uzyskać więcej informacji, zobacz stronę Inspekcja poprzednich stanów aplikacji przy użyciu funkcji IntelliTrace .

Debugowanie problemów z wydajnością

Jeśli aplikacja działa zbyt wolno lub używa zbyt dużej ilości pamięci, może być konieczne wcześniejsze przetestowanie aplikacji przy użyciu narzędzi profilowania. Aby uzyskać więcej informacji na temat narzędzi profilowania, takich jak narzędzie użycie procesora CPU i Analizator pamięci, zobacz Najpierw zapoznaj się z narzędziami profilowania.

Następne kroki

W tym samouczku zapoznaliśmy się z wieloma funkcjami debugera. Warto dokładniej przyjrzeć się jednej z tych funkcji, takich jak punkty przerwania.