Samouczek: dowiedz się, jak debugować kod w języku C# przy użyciu programu Visual Studio

W tym artykule przedstawiono funkcje debugera programu Visual Studio w przewodniku krok po kroku. Jeśli chcesz wyświetlić funkcje debugera wyższego poziomu, zobacz Pierwsze spojrzenie na debuger. Podczas debugowania aplikacji zwykle oznacza to, że uruchamiasz aplikację z dołączonym debugerem. Podczas wykonywania tego zadania debuger udostępnia wiele sposobów, aby zobaczyć, co robi kod podczas jego działania. 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 sprawdzić ścieżkę wykonywania kodu, sprawdzić, czy działa gałąź kodu itd. Jeśli to ćwiczenie po raz pierwszy próbujesz debugować kod, warto przeczytać artykuł Debugowanie dla początkujących przed przejściem do tego artykułu.

Mimo że aplikacja demonstracyjna jest językiem C#, większość funkcji ma zastosowanie do języków C++, Visual Basic, F#, Python, JavaScript i innych obsługiwanych przez program Visual Studio (F# nie obsługuje edycji i kontynuowania). Języki F# i JavaScript nie obsługują okna Autos(Autos ). Zrzuty ekranu znajdują się w języku C#.

Ten samouczek obejmuje następujące kroki:

  • Uruchom debuger i naciśnij punkty przerwania.
  • Learn commands to step through code in the debugger (Instrukcje dotyczące wykonywania kroków w kodzie w debugerze)
  • Sprawdzanie zmiennych w poradach dotyczących danych i oknach debugera
  • Badanie stosu wywołań

Wymagania wstępne

Musisz mieć zainstalowany program Visual Studio 2022 i pakiet roboczy programowanie aplikacji klasycznych platformy .NET.

Musisz mieć zainstalowany program Visual Studio 2019 i pakiet roboczy programowania dla wielu platform .NET Core.

Jeśli program Visual Studio nie został jeszcze zainstalowany, przejdź do strony pobierania programu Visual Studio, aby zainstalować ją bezpłatnie.

Jeśli musisz zainstalować obciążenie, ale masz już program Visual Studio, przejdź do pozycji Narzędzia Pobierz narzędzia>i funkcje..., co spowoduje otwarcie Instalator programu Visual Studio. Zostanie uruchomiona Instalator programu Visual Studio. Wybierz obciążenie programistyczne dla wielu platform .NET Core, a następnie wybierz pozycję Modyfikuj.

Jeśli masz już program Visual Studio, ale nie zainstalowano obciążenia programistycznego dla komputerów .NET, przejdź do pozycji Narzędzia Pobierz narzędzia>i funkcje..., co spowoduje uruchomienie Instalator programu Visual Studio. W Instalator programu Visual Studio wybierz obciążenie programowanie aplikacji klasycznych .NET, a następnie wybierz pozycję Modyfikuj.

Tworzenie projektu

Najpierw należy utworzyć projekt aplikacji konsolowej platformy .NET Core. Typ projektu jest dostarczany ze wszystkimi potrzebnymi plikami szablonów, zanim jeszcze wszystko zostało dodane.

  1. Otwórz program Visual Studio. Jeśli okno uruchamiania nie jest otwarte, wybierz pozycję Okno uruchamiania pliku>.

  2. W oknie uruchamiania wybierz pozycję Utwórz nowy projekt.

  1. W oknie Tworzenie nowego projektu wprowadź konsolę w polu wyszukiwania. Następnie wybierz pozycję C# z listy Język, a następnie wybierz pozycję Windows z listy Platforma.

    Po zastosowaniu filtrów języka i platformy wybierz szablon Aplikacja konsolowa dla platformy .NET Core, a następnie wybierz przycisk Dalej.

    Screenshot of the C# template for the Console App.

    Uwaga

    Jeśli nie widzisz szablonu Aplikacja konsolowa, możesz zainstalować go w oknie Tworzenie nowego projektu . W komunikacie Nie można znaleźć tego, czego szukasz? wybierz link Zainstaluj więcej narzędzi i funkcji. Następnie w Instalator programu Visual Studio wybierz obciążenie programowania dla wielu platform .NET Core.

  2. W oknie Konfigurowanie nowego projektu wprowadź getStartedDebugging w polu Nazwa projektu. Następnie wybierz Dalej.

  3. Wybierz zalecaną strukturę docelową (obsługa długoterminowa lub obsługa długoterminowa.NET 8.0), a następnie wybierz pozycję Utwórz.

  1. W oknie Tworzenie nowego projektu wprowadź konsolę w polu wyszukiwania. Następnie wybierz pozycję C# z listy Język, a następnie wybierz pozycję Windows z listy Platforma.

    Po zastosowaniu filtrów języka i platformy wybierz szablon Aplikacja konsolowa, a następnie wybierz przycisk Dalej.

    Screenshot of the 'Console Application' template in the 'Create a new project' window of Visual Studio 2022.

    Uwaga

    Jeśli nie widzisz szablonu Aplikacja konsolowa, możesz zainstalować go w oknie Tworzenie nowego projektu . W komunikacie Nie można znaleźć tego, czego szukasz? wybierz link Zainstaluj więcej narzędzi i funkcji. Następnie w Instalator programu Visual Studio wybierz obciążenie programowanie aplikacji klasycznych platformy .NET.

  2. W oknie Konfigurowanie nowego projektu wprowadź getStartedDebugging w polu Nazwa projektu. Następnie wybierz Dalej.

  3. W oknie Dodatkowe informacje upewnij się, że w menu rozwijanym Framework wybrano pozycję .NET 8.0, a następnie wybierz pozycję Utwórz.

Program Visual Studio otwiera nowy projekt.

Tworzenie aplikacji

W pliku Program.cs zastąp cały kod domyślny następującym kodem:

using System;

class ArrayExample
{
   static void Main()
   {
      char[] letters = { 'f', 'r', 'e', 'd', ' ', 's', 'm', 'i', 't', 'h'};
      string name = "";
      int[] a = new int[10];
      for (int i = 0; i < letters.Length; i++)
      {
         name += letters[i];
         a[i] = i + 1;
         SendMessage(name, a[i]);
      }
      Console.ReadKey();
   }

   static void SendMessage(string name, int msg)
   {
      Console.WriteLine("Hello, " + name + "! Count to " + msg);
   }
}

Uruchom debuger!

  1. Naciśnij klawisz F5 (Debuguj > rozpocznij debugowanie) lub przycisk Image of the Start Debugging button. Rozpocznij debugowanie na pasku narzędzi debugowania.

    Klawisz F5 uruchamia aplikację z debugerem dołączonym do procesu aplikacji, ale teraz nie zrobiliśmy nic specjalnego w celu zbadania kodu. Aplikacja zostanie załadowana i zobaczysz te dane wyjściowe konsoli.

    Hello, f! Count to 1
    Hello, fr! Count to 2
    Hello, fre! Count to 3
    Hello, fred! Count to 4
    Hello, fred ! Count to 5
    Hello, fred s! Count to 6
    Hello, fred sm! Count to 7
    Hello, fred smi! Count to 8
    Hello, fred smit! Count to 9
    Hello, fred smith! Count to 10
    

    W tym samouczku przyjrzysz się bliżej tej aplikacji przy użyciu debugera i zapoznasz się z funkcjami debugera.

  2. Zatrzymaj debuger, naciskając czerwony przycisk zatrzymania (Shift + F5). Image of the Stop Debugging button.

  3. W oknie konsoli naciśnij klawisz, aby zamknąć okno konsoli.

W większości przypadków używamy tutaj skrótów klawiaturowych, ponieważ jest to szybki sposób wykonywania poleceń debugera. Zanotowane są również równoważne polecenia, takie jak polecenia paska narzędzi lub menu.

  1. Aby uruchomić debuger, wybierz klawisz F5 lub wybierz przycisk Debuguj element docelowy na pasku narzędzi Standardowy lub wybierz przycisk Rozpocznij debugowanie na pasku narzędzi Debuguj lub wybierz pozycję Debuguj>rozpocznij debugowanie na pasku menu.

    Screenshot of the Debug Target button in the Standard toolbar of Visual Studio 2022.

    Klawisz F5 uruchamia aplikację z debugerem dołączonym do procesu aplikacji. Ponieważ nie zrobiliśmy nic specjalnego w celu zbadania kodu, aplikacja zostanie uruchomiona do ukończenia i zobaczysz dane wyjściowe konsoli.

    Hello, f! Count to 1
    Hello, fr! Count to 2
    Hello, fre! Count to 3
    Hello, fred! Count to 4
    Hello, fred ! Count to 5
    Hello, fred s! Count to 6
    Hello, fred sm! Count to 7
    Hello, fred smi! Count to 8
    Hello, fred smit! Count to 9
    Hello, fred smith! Count to 10
    
  2. Aby zatrzymać debuger, wybierz pozycję Shift+F5 lub wybierz przycisk Zatrzymaj debugowanie na pasku narzędzi Debugowanie lub wybierz pozycję Debuguj>zatrzymaj debugowanie na pasku menu.

    Screenshot of the Stop debugging button in the Debug toolbar of Visual Studio 2022.

  3. W oknie konsoli wybierz dowolny klucz, aby zamknąć okno konsoli.

Ustawianie punktu przerwania i uruchamianie debugera

  1. for W pętli Main funkcji ustaw punkt przerwania, klikając lewy margines w następującym wierszu kodu:

    name += letters[i];

    Zostanie wyświetlone czerwone kółko Image of a breakpoint. , w którym ustawiono punkt przerwania.

    Punkty przerwania są jedną z najbardziej podstawowych i podstawowych funkcji 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ż czy jest uruchamiana gałąź kodu.

  2. Naciśnij klawisz F5 lub przycisk Rozpocznij debugowanie . Screenshot of the Start Debugging button. Aplikacja zostanie uruchomiona, a debuger zostanie uruchomiony w wierszu kodu, w którym ustawiono punkt przerwania.

    Set and hit a breakpoint

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

    Jeśli aplikacja nie jest jeszcze uruchomiona, klawisz F5 uruchamia debuger i zatrzymuje się w pierwszym punkcie przerwania. W przeciwnym razie klawisz F5 kontynuuje uruchamianie aplikacji w następnym punkcie przerwania.

    Punkty przerwania to przydatna funkcja, gdy znasz wiersz kodu lub sekcję kodu, którą chcesz szczegółowo zbadać. Aby uzyskać informacje na temat różnych typów punktów przerwania, które można ustawić, takich jak warunkowe punkty przerwania, zobacz Używanie punktów przerwania.

  1. for W pętli Main funkcji ustaw punkt przerwania, klikając lewy margines w następującym wierszu kodu:

    name += letters[i];

    Zostanie wyświetlone czerwone kółko, w którym ustawiono punkt przerwania.

    Screenshot of a breakpoint in Visual Studio 2022.

    Punkty przerwania są istotną funkcją niezawodnego debugowania. Możesz ustawić punkty przerwania, w których program Visual Studio ma wstrzymać uruchomiony kod, aby przyjrzeć się wartościom zmiennych lub zachowaniu pamięci albo sprawdzić, czy jest uruchamiana gałąź kodu.

  2. Aby rozpocząć debugowanie, wybierz pozycję F5 lub wybierz przycisk Debuguj element docelowy na pasku narzędzi Standardowy lub wybierz przycisk Rozpocznij debugowanie na pasku narzędzi Debuguj lub wybierz pozycję Debuguj>rozpocznij debugowanie na pasku menu. Aplikacja zostanie uruchomiona, a debuger zostanie uruchomiony w wierszu kodu, w którym ustawiono punkt przerwania.

    Screenshot showing a breakpoint in the code editor of Visual Studio 2022, with code execution paused at the breakpoint.

    Żółta strzałka wskazuje instrukcję, na której wstrzymano debuger. Wykonywanie aplikacji jest wstrzymane w tym samym momencie, a instrukcja nie została jeszcze wykonana.

    Gdy aplikacja nie jest uruchomiona, klawisz F5 uruchamia debuger, który uruchamia aplikację, dopóki nie osiągnie pierwszego punktu przerwania. Jeśli aplikacja zostanie wstrzymana w punkcie przerwania, klawisz F5 będzie kontynuować uruchamianie aplikacji do momentu osiągnięcia następnego punktu przerwania.

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

W większości przypadków używamy tutaj skrótów klawiaturowych, ponieważ jest to dobry sposób na szybkie wykonywanie aplikacji w debugerze (równoważne polecenia, takie jak polecenia menu, są wyświetlane w nawiasach).

  1. Podczas gdy wykonywanie kodu jest wstrzymane na instrukcji name += letters[i] , umieść kursor na letters zmiennej i zobaczysz jej wartość domyślną, wartość pierwszego elementu w tablicy, char[10].

    Funkcje, które umożliwiają inspekcję zmiennych, są jedną z najbardziej przydatnych funkcji debugera i istnieją różne sposoby, aby to zrobić. Często podczas próby debugowania problemu próbujesz dowiedzieć się, czy zmienne przechowują wartości, które mają być przechowywane w określonym czasie.

  2. Rozwiń zmienną, letters aby wyświetlić jej właściwości, które zawierają wszystkie elementy, które zawiera zmienna.

    Screenshot of the debugger paused at the 'name+= letters[I]' statement.

  3. Następnie umieść kursor na zmiennej name i zobaczysz jego bieżącą wartość, pusty ciąg.

  4. Naciśnij klawisz F10 (lub dwukrotnie wybierz pozycję Debuguj > krok w górę), aby przejść do SendMessage wywołania metody, a następnie naciśnij klawisz F10 jeszcze raz.

    Klawisz F10 przechodzi debuger do następnej instrukcji bez przechodzenia do funkcji lub metod w kodzie aplikacji (kod nadal jest wykonywany). Naciskając klawisz F10 w wywołaniu SendMessage metody, pominięto kod SendMessage implementacji dla elementu (co może nie być teraz interesujące).

  5. Naciśnij klawisz F10 (lub krok debugowania>) kilka razy, aby wykonać iterację kilka razy przez for pętlę, wstrzymując ponownie w punkcie przerwania i umieszczając wskaźnik myszy na name zmiennej za każdym razem, aby sprawdzić jego wartość.

    An animated screenshot of the Visual Studio Debugger showing the effect of pressing F10 to

    Wartość zmiennej zmienia się wraz z każdą iterację for pętli, pokazując wartości f, a następnie fr, i fretak dalej. Aby przyspieszyć debuger przez pętlę w tym scenariuszu, możesz nacisnąć klawisz F5 (lub wybrać pozycję Kontynuuj debugowanie>), co spowoduje przejście do punktu przerwania zamiast następnej instrukcji.

    Często podczas debugowania chcesz szybko sprawdzić wartości właściwości w zmiennych, aby sprawdzić, czy przechowują one wartości, które mają być przechowywane, a porady dotyczące danych są dobrym sposobem na to.

  6. Podczas gdy wykonywanie kodu pozostaje wstrzymane w pętli w for metodzie Main , naciśnij klawisz F11 (lub wybierz pozycję Debuguj > krok do), dopóki nie zostanie wstrzymany przy SendMessage wywołaniu metody.

    Powinien znajdować się w tym wierszu kodu:

    SendMessage(name, a[i]);

  7. Naciśnij klawisz F11 jeszcze raz, aby przejść do SendMessage metody .

    Żółty wskaźnik przechodzi do SendMessage metody .

    Screenshot of the execution pointer at the SendMessage method.

    F11 jest poleceniem Step Into i rozwija wykonywanie aplikacji po jednej instrukcji naraz. F11 to dobry sposób na sprawdzenie przepływu wykonywania w najbardziej szczegółowy sposób. Domyślnie debuger pomija kod nieużytkownika (jeśli chcesz uzyskać więcej szczegółów, zobacz Tylko mój kod).

    Załóżmy, że zakończono badanie SendMessage metody i chcesz wydostać się z metody, ale pozostać w debugerze. Można to zrobić za pomocą polecenia Krok do wyjścia .

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

    To polecenie wznawia wykonywanie aplikacji (i przechodzi do debugera), dopóki bieżąca metoda lub funkcja nie zostanie zwrócona.

    Należy wrócić do for pętli w metodzie Main , wstrzymane przy wywołaniu SendMessage metody. Aby uzyskać więcej informacji na temat różnych sposobów przechodzenia przez kod, zobacz Navigate code in the debugger (Nawigowanie po kodzie w debugerze).

  1. Podczas gdy wykonywanie kodu jest wstrzymane na instrukcjiname += letters[i], umieść wskaźnik myszy na letters zmiennej, aby wyświetlić poradę dotyczącą danych pokazującą rozmiar tablicy i typ elementu. char[10]

    Uwaga

    Jedną z najbardziej przydatnych funkcji debugera jest możliwość inspekcji zmiennej. Często podczas próby debugowania problemu próbujesz dowiedzieć się, czy zmienne mają oczekiwane wartości w określonym czasie. Wyświetlanie wskazówek dotyczących danych to dobry sposób na sprawdzenie tego.

  2. Rozwiń zmienną, letters aby wyświetlić wszystkie jej elementy tablicy i ich wartości.

    Screenshot of a debugger data tip in Visual Studio 2022 that shows the element values for the 'letters' array variable.

  3. Umieść kursor na zmiennej name , aby zobaczyć jego bieżącą wartość, która jest pustym ciągiem.

  4. Aby przejść do następnej instrukcji debugera, wybierz pozycję F10 lub wybierz przycisk Przekrok na pasku narzędzi Debuguj lub wybierz pozycję Debuguj>krok powyżej na pasku menu. Wybierz klawisz F10 dwa razy więcej, aby przejść obok wywołania SendMessage metody.

    Klawisz F10 rozwija debuger bez przechodzenia do funkcji lub metod, chociaż ich kod nadal jest wykonywany. W ten sposób pominąliśmy debugowanie kodu w metodzie SendMessage , której nie interesujemy się teraz.

  5. Aby iterować pętlę for kilka razy, wybierz klawisz F10 wielokrotnie. Podczas każdej iteracji pętli wstrzymaj się w punkcie przerwania, a następnie umieść kursor na zmiennej name , aby sprawdzić jej wartość w poradzie danych.

    Screenshot of a debugger data tip in Visual Studio 2022 that shows the string value for the 'name' variable.

    Wartość zmiennej zmienia się wraz z każdą iterację for pętli, pokazując wartości f, a następnie fr, i fretak dalej. Aby przyspieszyć przechodzenie debugera przez pętlę, wybierz klawisz F5 , który przechodzi do punktu przerwania zamiast następnej instrukcji.

  6. Gdy wykonywanie kodu jest wstrzymane w for pętli metody, wybierz klawisz F11 lub wybierz przycisk Przejdź do z paska narzędzi Debuguj lub wybierz pozycję Debuguj>krok do na pasku menu, dopóki nie osiągniesz SendMessage wywołania Main metody.

    Debuger powinien zostać wstrzymany w tym wierszu kodu:

    SendMessage(name, a[i]);

  7. Aby przejść do SendMessage metody, ponownie wybierz klawisz F11 .

    Żółty wskaźnik przechodzi do SendMessage metody .

    Screenshot showing the execution pointer of the debugger within the 'SendMessage' method.

    Klawisz F11 pomaga dokładniej zbadać przepływ wykonywania kodu. Aby przejść do metody z wywołania metody, wybierz pozycję F11. Domyślnie debuger pomija przechodzenie do metod innych niżuser. Aby dowiedzieć się więcej o debugowaniu kodu nieużytkownika, zobacz Just My Code (Tylko mój kod).

    Po zakończeniu SendMessage debugowania metody możesz wrócić do for pętli main metody .

  8. Aby opuścić metodęSendMessage, wybierz pozycję Shift+F11 lub wybierz przycisk Wyjdź na pasku narzędzi Debuguj lub wybierz pozycję Debuguj>wyjście na pasku menu.

    Krok wychodzący wznawia wykonywanie aplikacji i przechodzi do debugera, dopóki bieżąca metoda lub funkcja nie zwróci.

    Żółty wskaźnik jest widoczny z powrotem w for pętli Main metody, wstrzymany przy wywołaniu SendMessage metody. Aby uzyskać więcej informacji na temat różnych sposobów przechodzenia przez kod, zobacz Navigate code in the debugger (Nawigowanie po kodzie w debugerze).

  1. Wybierz klawisz F5 , aby ponownie przejść do punktu przerwania.

  2. W edytorze kodu przewiń w dół i umieść kursor na Console.WriteLine metodzie w metodzieSendMessage, aż pojawi się zielony przycisk Image of the Run to Click button. Uruchom do kliknięcia. Etykietka narzędzia przycisku zawiera komunikat "Uruchom wykonanie tutaj".

    Screenshot of the Run to Click button.

    Uwaga

    Przycisk Uruchom do kliknięcia jest nowy w programie Visual Studio 2017. (Jeśli nie widzisz zielonego przycisku strzałki, użyj polecenia W tym przykładzie F11 zamiast tego przesunie debuger do odpowiedniego miejsca).

  3. Wybierz przycisk Uruchom, aby kliknąć. Image of the Run to Click button.

    Debuger przechodzi do Console.WriteLine metody .

    Użycie tego przycisku jest podobne do ustawiania tymczasowego punktu przerwania. Polecenie Run to Click jest przydatne, aby szybko obejść się w widocznym regionie kodu aplikacji (możesz wybrać dowolny otwarty plik).

  1. Wybierz klawisz F5 , aby ponownie przejść do punktu przerwania.

  2. W edytorze kodu umieść kursor na Console.WriteLine wywołaniu metody w metodzie SendMessage do momentu wyświetlenia przycisku Uruchom do kliknięcia . Etykietka narzędzia przycisku zawiera komunikat "Uruchom wykonanie tutaj".

    Screenshot showing the Run to Click button in Visual Studio 2022.

  3. Wybierz przycisk Uruchom, aby kliknąć. Alternatywnie po naciśnięciu kursora na instrukcji Console.WriteLinewybierz klawisze Ctrl+F10. Możesz też kliknąć prawym przyciskiem myszy wywołanie Console.WriteLine metody i wybrać polecenie Uruchom do kursora z menu kontekstowego.

    Debuger przechodzi do wywołania Console.WriteLine metody.

    Użycie przycisku Uruchom do kliknięcia jest podobne do ustawienia tymczasowego punktu przerwania i jest przydatne do szybkiego poruszania się w widocznym regionie kodu aplikacji w otwartym pliku.

Szybkie ponowne uruchamianie aplikacji

Wybierz przyciskImage of the Restart App button.Uruchom ponownie na pasku narzędzi debugowania (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.

Debuger zatrzymuje się ponownie w punkcie przerwania ustawionym wcześniej wewnątrz for pętli.

Aby ponownie uruchomić aplikację od początku w debugerze, wybierz klawisze Ctrl+Shift+F5 lub wybierz przycisk Uruchom ponownie na pasku narzędzi Debuguj lub wybierz pozycję Debuguj> ponownie na pasku menu.

Screenshot of the Restart button in the Debug toolbar of Visual Studio 2022.

Ponowne uruchomienie zatrzymuje debuger, a następnie uruchamia go ponownie w jednym kroku. Po ponownym uruchomieniu debugera jest uruchamiany do pierwszego punktu przerwania, czyli punktu przerwania ustawionego wcześniej wewnątrz for pętli, a następnie wstrzymywania.

Sprawdzanie zmiennych za pomocą okien Autos i Locals

  1. Zapoznaj się z oknem Autos w dolnej części edytora kodu.

    Jeśli jest zamknięty, otwórz go podczas wstrzymania w debugerze, wybierając pozycję Debuguj>autos windows.>

    W oknie Autos zobaczysz zmienne i ich bieżącą wartość. W oknie Autos (Autos ) są wyświetlane wszystkie zmienne używane w bieżącym wierszu lub w poprzednim wierszu (Sprawdź dokumentację pod kątem zachowania specyficznego dla języka).

  2. Następnie przyjrzyj się oknie Ustawienia lokalne na karcie obok okna Autos .

  3. Rozwiń zmienną, letters aby wyświetlić zawarte w niej elementy.

    Screenshot of the Locals Window in Visual Studio.

    W oknie Ustawienia lokalne są wyświetlane zmienne, które znajdują się w bieżącym zakresie, czyli bieżącym kontekście wykonywania.

Okna Autos i Locals zawierają wartości zmiennych podczas debugowania. Okna są dostępne tylko podczas sesji debugowania. W oknie Autos (Autos ) są wyświetlane zmienne używane w bieżącym wierszu, w których znajduje się debuger i poprzedni wiersz. W oknie Ustawienia lokalne są wyświetlane zmienne zdefiniowane w zakresie lokalnym, które są zwykle bieżącą funkcją lub metodą.

  1. Podczas wstrzymania debugera wyświetl okno Autos w dolnej części edytora kodu.

    Jeśli okno Autos jest zamknięte, wybierz klawisze Ctrl+D, A lub wybierz pozycję Debuguj>autos windows>na pasku menu.

  2. Gdy debuger nadal jest wstrzymany, wyświetl okno Ustawienia lokalne na karcie obok okna Autos .

    Jeśli okno Ustawienia lokalne jest zamknięte, wybierz klawisze Ctrl+D, L lub wybierz pozycję Debuguj>ustawienia lokalne systemu Windows.>

  3. W oknie Ustawienia lokalne rozwiń zmiennąletters, aby wyświetlić jej elementy tablicy i ich wartości.

    Screenshot of the Locals window in Visual Studio 2022, with the 'letters' array variable expanded.

Aby uzyskać więcej informacji o oknach Autos i Locals , zobacz Inspekcja zmiennych w oknach Autos and Locals (Sprawdzanie zmiennych w oknach Autos and Locals).

Ustawianie zegarka

W oknie edytora kodu głównego kliknij prawym przyciskiem myszy zmienną name i wybierz polecenie Dodaj zegarek.

W dolnej części edytora kodu zostanie otwarte okno Obserwowanie . Możesz użyć okna Czujka , aby określić zmienną (lub wyrażenie), na której chcesz mieć oko.

Teraz masz zegarek ustawiony na zmiennej name i możesz zobaczyć jego zmianę wartości podczas przechodzenia przez debuger. W przeciwieństwie do innych okien zmiennych, okno Obserwowanie zawsze wyświetla zmienne, które obserwujesz (są wyszarywane, gdy poza zakresem).

Możesz określić zmienną lub wyrażenie, na które chcesz mieć oko podczas przechodzenia przez kod — dodając ją do okna Obserwowanie .

  1. Podczas wstrzymania debugera kliknij prawym przyciskiem myszy zmienną name i wybierz polecenie Dodaj zegarek.

    Domyślnie w dolnej części edytora kodu zostanie otwarte okno Obserwowanie .

  2. Teraz, gdy ustawisz zegarek dla zmiennej name , przejdź przez kod, aby zobaczyć wartość name zmiany zmiennej z każdą for iteracją pętli.

    W przeciwieństwie do innych okien zmiennych, okno Obserwowanie zawsze wyświetla zmienne, które obserwujesz. Zmienne, które są poza zakresem, są wyświetlane jako niedostępne.

Aby uzyskać więcej informacji na temat okna Watch , zobacz Watch variables with Watch windows (Obserwowanie zmiennych za pomocą okien kontrolnych).

Badanie stosu wywołań

  1. Podczas gdy wykonywanie kodu jest wstrzymane w for pętli, wybierz okno Stos wywołań, które jest domyślnie otwarte w prawym dolnym okienku.

    Jeśli jest zamknięty, otwórz go podczas wstrzymania w debugerze, wybierając pozycję Debuguj>stos wywołań systemu Windows.>

  2. Wybierz klawisz F11 kilka razy, aż zobaczysz wstrzymanie debugera w metodzie SendMessage . Zapoznaj się z oknem stosu wywołań .

    Screenshot of the Call Stack window in Visual Studio.

    W oknie Stos wywołań jest wyświetlana kolejność wywoływania metod i funkcji. W górnym wierszu jest wyświetlana bieżąca funkcja ( SendMessage metoda w tej aplikacji). Drugi wiersz pokazuje, że SendMessage został wywołany z Main metody itd.

    Uwaga

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

    Stos wywołań to dobry sposób na sprawdzenie i zrozumienie przepływu wykonywania aplikacji.

    Możesz kliknąć dwukrotnie wiersz kodu, aby przyjrzeć się temu kodowi źródłowemu, który również zmienia bieżący zakres w ramach inspekcji przez debuger. Ta akcja nie powoduje postępu debugera.

    Możesz również użyć menu prawym przyciskiem myszy w oknie Stos wywołań, aby wykonać inne czynności. Można na przykład wstawić punkty przerwania do określonych funkcji, przejść do debugera przy użyciu polecenia Uruchom do kursora i przejść do kodu źródłowego. Aby uzyskać więcej informacji, zobacz How to: Examine the Call Stack (Instrukcje: badanie stosu wywołań).

Stos wywołań może ułatwić zrozumienie przepływu wykonywania aplikacji, pokazując kolejność wywoływania metod i funkcji.

  1. Podczas gdy debuger jest wstrzymany w for pętli, wyświetl okno stosu wywołań, które zostanie domyślnie otwarte w prawym dolnym okienku edytora kodu.

    Jeśli okno stosu wywołań jest zamknięte, wybierz klawisze Ctrl+D, C lub wybierz pozycję Debuguj>stos wywołań systemu Windows>na pasku menu.

    W oknie Stos wywołań zobaczysz żółty wskaźnik w bieżącej Main metodzie.

  2. Wybierz klawisz F11 kilka razy, aż zobaczysz wstrzymanie debugera w metodzie SendMessage .

    Górny wiersz okna stosu wywołań przedstawia bieżącą SendMessage funkcję, która jest metodą . Drugi wiersz pokazuje, że SendMessage metoda została wywołana z Main metody .

    Screenshot of the Call Stack window in Visual Studio 2022.

    Uwaga

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

    W oknie Stos wywołań możesz kliknąć dwukrotnie wiersz kodu, aby przejść do tego kodu źródłowego, który zmienia bieżący zakres inspekcji przez debuger. Ta akcja nie powoduje postępu debugera.

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

Aby uzyskać więcej informacji na temat stosu wywołań, zobacz How to: Examine the Call Stack (Instrukcje: badanie stosu wywołań).

Zmienianie przepływu wykonywania

  1. Naciśnij klawisz F11 dwa razy, aby uruchomić metodę Console.WriteLine .

  2. W przypadku wstrzymania debugera w SendMessage wywołaniu metody użyj myszy, aby chwycić żółtą strzałkę lub wskaźnik wykonywania (na lewym marginesie) i przeciągnij wskaźnik w górę do instrukcji Console.WriteLine .

  3. Naciśnij klawisz F11.

    Debuger ponownie uruchamia metodę Console.WriteLine (ta akcja jest widoczna w danych wyjściowych okna konsoli).

    Zmieniając przepływ wykonywania, można wykonywać takie czynności, jak testowanie różnych ścieżek wykonywania kodu lub ponowne uruchamianie kodu bez ponownego uruchamiania debugera.

    Ostrzeżenie

    Często należy zachować ostrożność przy użyciu tej funkcji i zobaczyć ostrzeżenie w etykietce narzędzia. Mogą też zostać wyświetlone inne ostrzeżenia. Przeniesienie wskaźnika nie może przywrócić aplikacji do wcześniejszego stanu aplikacji.

  4. Naciśnij klawisz F5 , aby kontynuować uruchamianie aplikacji.

    Gratulujemy ukończenia tego samouczka!

Wskaźnik wykonywania można przenieść, aby zmienić przepływ aplikacji podczas debugowania.

  1. Gdy debuger wstrzymał się przy SendMessage wywołaniu metody w for pętli, wybierz klawisz F11 trzy razy, aby przejść do SendMessage metody i przejść obok Console.WriteLine metody po jej wykonaniu.

    Debuger jest teraz wstrzymany na ostatnim zamykającym nawiasie klamrowym SendMessage metody .

  2. Użyj myszy, aby chwycić żółtą strzałkę lub wskaźnik wykonywania (na lewym marginesie), a następnie przeciągnij wskaźnik w górę o jedną linię.

    Debuger jest teraz z powrotem w instrukcji Console.WriteLine .

  3. Wybierz pozycję F11.

    Debuger ponownie uruchamia metodę Console.WriteLine i zobaczysz zduplikowany wiersz w danych wyjściowych okna konsoli.

  4. Wybierz pozycję F5 , aby kontynuować uruchamianie aplikacji.

Zmieniając przepływ wykonywania, można wykonywać takie czynności, jak testowanie różnych ścieżek wykonywania kodu lub ponowne uruchamianie kodu bez ponownego uruchamiania debugera.

Ostrzeżenie

Użyj tej funkcji z ostrożnością. W etykietce narzędzia wskaźnika wykonywania zostanie wyświetlone ostrzeżenie o możliwości niezamierzonych konsekwencji. Mogą też zostać wyświetlone inne ostrzeżenia. Przeniesienie wskaźnika wykonywania nie może przywrócić aplikacji do wcześniejszego stanu.

Aby uzyskać więcej informacji na temat zmiany przepływu wykonywania, zobacz Przenoszenie wskaźnika w celu zmiany przepływu wykonywania.

Gratulujemy ukończenia tego samouczka!

Następne kroki

W tym samouczku przedstawiono sposób uruchamiania debugera, przechodzenia przez kod i inspekcji zmiennych. Warto zapoznać się z ogólnymi funkcjami debugera wraz z linkami do dodatkowych informacji.