Samouczek: debugowanie aplikacji konsolowej .NET Core przy użyciu programu Visual StudioTutorial: Debug a .NET Core console application using Visual Studio

W tym samouczku przedstawiono narzędzia debugowania dostępne w programie Visual Studio.This tutorial introduces the debugging tools available in Visual Studio.

Wymagania wstępnePrerequisites

Użyj konfiguracji kompilacji debugowaniaUse Debug build configuration

Debugowanie i wydanie to wbudowane konfiguracje kompilacji programu Visual Studio.Debug and Release are Visual Studio's built-in build configurations. Konfiguracja kompilacji debugowania umożliwia debugowanie i konfigurację wydania dla ostatecznej dystrybucji wersji.You use the Debug build configuration for debugging and the Release configuration for the final release distribution.

W konfiguracji debugowania program kompiluje z pełnymi symbolicznymi informacjami o debugowaniu i bez optymalizacji.In the Debug configuration, a program compiles with full symbolic debug information and no optimization. Optymalizacja komplikuje debugowanie, ponieważ relacja między kodem źródłowym i wygenerowanymi instrukcjami jest bardziej skomplikowana.Optimization complicates debugging, because the relationship between source code and generated instructions is more complex. Konfiguracja wydania programu nie ma symbolicznych informacji o debugowaniu i jest w pełni zoptymalizowana.The release configuration of a program has no symbolic debug information and is fully optimized.

Domyślnie program Visual Studio używa konfiguracji kompilacji debugowania, więc nie trzeba jej zmieniać przed debugowaniem.By default, Visual Studio uses the Debug build configuration, so you don't need to change it before debugging.

  1. Uruchom program Visual Studio.Start Visual Studio.

  2. Otwórz projekt, który został utworzony w temacie Tworzenie aplikacji konsolowej platformy .NET Core przy użyciu programu Visual Studio.Open the project that you created in Create a .NET Core console application using Visual Studio.

    Bieżąca konfiguracja kompilacji jest pokazywana na pasku narzędzi.The current build configuration is shown on the toolbar. Poniższy obraz paska narzędzi pokazuje, że program Visual Studio jest skonfigurowany do kompilowania wersji do debugowania aplikacji:The following toolbar image shows that Visual Studio is configured to compile the Debug version of the app:

    Pasek narzędzi programu Visual Studio z wyróżnioną pozycją Debug

Ustawianie punktu przerwaniaSet a breakpoint

Punkt przerwania tymczasowo przerywa wykonywanie aplikacji przed wykonaniem wiersza z punktem przerwania.A breakpoint temporarily interrupts the execution of the application before the line with the breakpoint is executed.

  1. Ustaw punkt przerwania w wierszu, który wyświetla nazwę, datę i godzinę, klikając na lewym marginesie okna kod w tym wierszu.Set a breakpoint on the line that displays the name, date, and time, by clicking in the left margin of the code window on that line. Lewy margines znajduje się po lewej stronie numerów wierszy.The left margin is to the left of the line numbers. Innym sposobem ustawienia punktu przerwania jest umieszczenie kursora w wierszu kodu, a następnie naciśnięcie klawisza F9 lub wybranie Debugopcji > przełączenia debugowania z paska menu.Other ways to set a breakpoint are by placing the cursor in the line of code and then pressing F9 or choosing Debug > Toggle Breakpoint from the menu bar.

    Jak widać na poniższej ilustracji, program Visual Studio wskazuje wiersz, w którym jest ustawiony punkt przerwania, zaznaczając go i wyświetlając czerwoną kropkę na lewym marginesie.As the following image shows, Visual Studio indicates the line on which the breakpoint is set by highlighting it and displaying a red dot in the left margin.

    Okno programu Visual Studio z ustawionym punktem przerwania

  2. Naciśnij klawisz F5 , aby uruchomić program w trybie debugowania.Press F5 to run the program in Debug mode. Innym sposobem rozpoczęcia debugowania jest wybranie opcji Debuguj > Rozpocznij debugowanie z menu.Another way to start debugging is by choosing Debug > Start Debugging from the menu.

  3. Wprowadź ciąg w oknie konsoli, gdy program zapyta o nazwę, a następnie naciśnij klawisz Enter.Enter a string in the console window when the program prompts for a name, and then press Enter.

  4. Wykonanie programu zostaje zatrzymane po osiągnięciu punktu przerwania i przed wykonaniem Console.WriteLine metody.Program execution stops when it reaches the breakpoint and before the Console.WriteLine method executes. W oknie Ustawienia lokalne są wyświetlane wartości zmiennych, które są zdefiniowane w aktualnie wykonywanej metodzie.The Locals window displays the values of variables that are defined in the currently executing method.

    Zrzut ekranu punktu przerwania w programie Visual Studio

Korzystanie z okna bezpośredniegoUse the Immediate window

Okno bezpośrednie umożliwia korzystanie z debugowanej aplikacji.The Immediate window lets you interact with the application you're debugging. Możesz interaktywnie zmienić wartość zmiennych, aby zobaczyć, jak ma to wpływ na program.You can interactively change the value of variables to see how it affects your program.

  1. Jeśli okno bezpośrednie nie jest widoczne, Wyświetl je, wybierając pozycję Debuguj > Windows > natychmiastWindows.If the Immediate window is not visible, display it by choosing Debug > Windows > Immediate.

  2. Wprowadź name = "Gracie" w oknie bezpośrednim i naciśnij klawisz Enter .Enter name = "Gracie" in the Immediate window and press the Enter key.

  3. Wprowadź date = DateTime.Parse("2019-11-16T17:25:00Z").ToUniversalTime() w oknie bezpośrednim i naciśnij klawisz Enter .Enter date = DateTime.Parse("2019-11-16T17:25:00Z").ToUniversalTime() in the Immediate window and press the Enter key.

    W oknie bezpośrednim zostanie wyświetlona wartość zmiennej ciągu i właściwości DateTime wartości.The Immediate window displays the value of the string variable and the properties of the DateTime value. Ponadto wartości zmiennych są aktualizowane w oknie zmiennych lokalnych .In addition, the values of the variables are updated in the Locals window.

    Lokalne i natychmiastowe okna w programie Visual Studio 2019

  4. Naciśnij klawisz F5 , aby kontynuować wykonywanie programu.Press F5 to continue program execution. Innym sposobem na kontynuowanie jest wybranie opcji Debuguj > Kontynuuj z menu.Another way to continue is by choosing Debug > Continue from the menu.

    Wartości wyświetlane w oknie konsoli odpowiadają zmianom wprowadzonym w oknie bezpośrednim .The values displayed in the console window correspond to the changes you made in the Immediate window.

    Okno konsoli pokazujące wprowadzone wartości

  5. Naciśnij dowolny klawisz, aby zamknąć aplikację i zatrzymać debugowanie.Press any key to exit the application and stop debugging.

Ustaw punkt przerwania warunkowegoSet a conditional breakpoint

Program wyświetla ciąg wprowadzony przez użytkownika.The program displays the string that the user enters. Co się stanie, jeśli użytkownik nie wprowadzi niczego?What happens if the user doesn't enter anything? Można to sprawdzić za pomocą przydatnej funkcji debugowania zwanej warunkowym punktem przerwania.You can test this with a useful debugging feature called a conditional breakpoint.

  1. Kliknij prawym przyciskiem myszy czerwoną kropkę reprezentującą punkt przerwania.Right-click on the red dot that represents the breakpoint. W menu kontekstowym wybierz pozycję warunki , aby otworzyć okno dialogowe Ustawienia punktu przerwania .In the context menu, select Conditions to open the Breakpoint Settings dialog. Wybierz pole warunki , jeśli nie zostało jeszcze wybrane.Select the box for Conditions if it's not already selected.

    Edytor przedstawiający panel ustawień punktu przerwania-C #

  2. Dla wyrażenia warunkowegowprowadź w polu poniższy kod, który pokazuje przykładowy kod, który sprawdza, czy x jest 5.For the Conditional Expression, enter the following code in the field that shows example code that tests if x is 5. Jeśli język, którego chcesz użyć, nie jest wyświetlany, Zmień selektor języka w górnej części strony.If the language you want to use is not shown, change the language selector at the top of the page.

    String.IsNullOrEmpty(name)
    
    String.IsNullOrEmpty(name)
    

    Za każdym razem, gdy punkt przerwania został trafiony, debuger wywołuje String.IsNullOrEmpty(name) metodę i przerywa w tym wierszu tylko wtedy, gdy wywołanie metody zwróci wartość true .Each time the breakpoint is hit, the debugger calls the String.IsNullOrEmpty(name) method, and it breaks on this line only if the method call returns true.

    Zamiast wyrażenia warunkowego można określić liczbę trafień, która przerywa wykonywanie programu, zanim instrukcja zostanie wykonana określoną liczbę razy.Instead of a conditional expression, you can specify a hit count, which interrupts program execution before a statement is executed a specified number of times. Innym rozwiązaniem jest określenie warunku filtru, który przerywa wykonywanie programu w oparciu o takie atrybuty jak identyfikator wątku, nazwa procesu lub nazwa wątku.Another option is to specify a filter condition, which interrupts program execution based on such attributes as a thread identifier, process name, or thread name.

  3. Wybierz pozycję Zamknij , aby zamknąć okno dialogowe.Select Close to close the dialog.

  4. Uruchom program z debugowaniem, naciskając klawisz F5.Start the program with debugging by pressing F5.

  5. W oknie konsoli naciśnij klawisz Enter po wyświetleniu monitu, aby wprowadzić swoją nazwę.In the console window, press the Enter key when prompted to enter your name.

  6. Ponieważ określony warunek ( name is null lub String.Empty ) został spełniony, wykonanie programu zatrzyma się po osiągnięciu punktu przerwania i przed wykonaniem Console.WriteLine metody.Because the condition you specified (name is either null or String.Empty) has been satisfied, program execution stops when it reaches the breakpoint and before the Console.WriteLine method executes.

  7. Wybierz okno zmienne lokalne , które pokazuje wartości zmiennych, które są lokalne dla aktualnie wykonywanej metody.Select the Locals window, which shows the values of variables that are local to the currently executing method. W tym przypadku Main jest obecnie wykonywana metoda.In this case, Main is the currently executing method. Zwróć uwagę, że wartość name zmiennej to "" lub String.Empty .Observe that the value of the name variable is "", or String.Empty.

  8. Potwierdź, że wartość jest pustym ciągiem, wprowadzając poniższą instrukcję w oknie bezpośrednim i naciskając klawisz Enter.Confirm the value is an empty string by entering the following statement in the Immediate window and pressing Enter. Wynik to true .The result is true.

    ? name == String.Empty
    
    ? String.IsNullOrEmpty(name)
    

    Znak zapytania kieruje okno bezpośrednie do obliczenia wyrażenia.The question mark directs the immediate window to evaluate an expression.

    Bezpośrednie okno zwracające wartość true po wykonaniu instrukcji-C #

  9. Naciśnij klawisz F5 , aby kontynuować wykonywanie programu.Press F5 to continue program execution.

  10. Naciśnij dowolny klawisz, aby zamknąć okno konsoli i zatrzymać debugowanie.Press any key to close the console window and stop debugging.

  11. Wyczyść punkt przerwania, klikając kropkę na lewym marginesie okna kod.Clear the breakpoint by clicking on the dot in the left margin of the code window. Innymi sposobami czyszczenia punktu przerwania są naciśnięcie klawisza F9 lub wybranie polecenia Debuguj > Przełącz punkt przerwania , gdy zostanie wybrany wiersz kodu.Other ways to clear a breakpoint are by pressing F9 or choosing Debug > Toggle Breakpoint while the line of code is selected.

Przechodzenie przez programStep through a program

Program Visual Studio umożliwia również krok po kroku w wierszu przez program i monitorowanie jego wykonania.Visual Studio also allows you to step line by line through a program and monitor its execution. Zwykle ustawiasz punkt przerwania i obserwuj przepływ programu za pomocą niewielkiej części kodu programu.Ordinarily, you'd set a breakpoint and follow program flow through a small part of your program code. Ponieważ ten program jest mały, możesz przejść przez cały program.Since this program is small, you can step through the entire program.

  1. Wybierz pozycję Debuguj > krok do.Choose Debug > Step Into. Innym sposobem debugowania jednej instrukcji w danym momencie jest naciśnięcie klawisza F11.Another way to debug one statement at a time is by pressing F11.

    Program Visual Studio podświetla i wyświetli strzałkę obok następnego wiersza wykonania.Visual Studio highlights and displays an arrow beside the next line of execution.

    C#C#

    Visual Studio Wkrocz do metody-C #

    Visual BasicVisual Basic

    Visual Studio Wkrocz do metody-Visual Basic

    W tym momencie okno zmienne lokalne pokazuje, że args Tablica jest pusta i name i date ma wartości domyślne.At this point, the Locals window shows that the args array is empty, and name and date have default values. Ponadto program Visual Studio otworzył puste okno konsoli.In addition, Visual Studio has opened a blank console window.

  2. Naciśnij klawisz F11.Press F11. Program Visual Studio teraz podświetla następny wiersz wykonania.Visual Studio now highlights the next line of execution. Okno zmiennych lokalnych jest niezmienione, a okno konsoli pozostanie puste.The Locals window is unchanged, and the console window remains blank.

    C#C#

    Visual Studio — krok w źródle metody — C #

    Visual BasicVisual Basic

    Visual Studio — przejdź do źródła metody — Visual Basic

  3. Naciśnij klawisz F11.Press F11. Program Visual Studio podświetla instrukcję, która zawiera name przypisanie zmiennej.Visual Studio highlights the statement that includes the name variable assignment. Zostanie wyświetlone okno Ustawienia lokalne name , które ma wartość null , a w oknie konsoli jest wyświetlany ciąg "co to jest Twoja nazwa?".The Locals window shows that name is null, and the console window displays the string "What is your name?".

  4. Odpowiedz na monit, wprowadzając ciąg w oknie konsoli i naciskając klawisz Enter.Respond to the prompt by entering a string in the console window and pressing Enter. Konsola nie odpowiada, a wprowadzony ciąg nie jest wyświetlany w oknie konsoli, ale Console.ReadLine Metoda przechwytuje dane wejściowe.The console is unresponsive, and the string you entered isn't displayed in the console window, but the Console.ReadLine method will nevertheless capture your input.

  5. Naciśnij klawisz F11.Press F11. Program Visual Studio podświetla instrukcję, która zawiera date przypisanie zmiennej ( currentDate w Visual Basic).Visual Studio highlights the statement that includes the date variable assignment (currentDate in Visual Basic). Okno zmienne lokalne pokazuje wartość zwracaną przez wywołanie Console.ReadLine metody.The Locals window shows the value returned by the call to the Console.ReadLine method. W oknie konsoli jest również wyświetlany ciąg wprowadzony w wierszu polecenia.The console window also displays the string you entered at the prompt.

  6. Naciśnij klawisz F11.Press F11. Okno lokalne pokazuje wartość date zmiennej po przypisaniu z DateTime.Now właściwości.The Locals window shows the value of the date variable after the assignment from the DateTime.Now property. Okno konsoli nie jest zmieniane.The console window is unchanged.

  7. Naciśnij klawisz F11.Press F11. Program Visual Studio wywołuje Console.WriteLine(String, Object, Object) metodę.Visual Studio calls the Console.WriteLine(String, Object, Object) method. W oknie konsoli zostanie wyświetlony sformatowany ciąg.The console window displays the formatted string.

  8. Wybierz pozycję Debuguj > Wyjdź. Innym sposobem zatrzymania wykonywania krok po kroku jest naciśnięcie klawisza SHIFT + F11.Choose Debug > Step Out. Another way to stop step-by-step execution is by pressing Shift+F11.

    W oknie konsoli zostanie wyświetlony komunikat i czeka na naciśnięcie klawisza.The console window displays a message and waits for you to press a key.

  9. Naciśnij dowolny klawisz, aby zamknąć okno konsoli i zatrzymać debugowanie.Press any key to close the console window and stop debugging.

Użyj konfiguracji kompilacji wydaniaUse Release build configuration

Po przetestowaniu wersji debugowania aplikacji należy również skompilować i przetestować wersję publikacji.Once you've tested the Debug version of your application, you should also compile and test the Release version. Wersja wydania obejmuje optymalizacje kompilatora, które mogą czasami mieć negatywny wpływ na działanie aplikacji.The Release version incorporates compiler optimizations that can sometimes negatively affect the behavior of an application. Na przykład optymalizacje kompilatora, które mają na celu poprawę wydajności, mogą tworzyć sytuacje wyścigu w aplikacjach wielowątkowych.For example, compiler optimizations that are designed to improve performance can create race conditions in multithreaded applications.

Aby skompilować i przetestować wydaną wersję aplikacji konsolowej, Zmień konfigurację kompilacji na pasku narzędzi z Debuguj do Release.To build and test the Release version of your console application, change the build configuration on the toolbar from Debug to Release.

domyślny pasek narzędzi programu Visual Studio z wyróżnioną pozycją Debug

Po naciśnięciu klawisza F5 lub wybraniu opcji Kompiluj rozwiązanie z menu kompilacja program Visual Studio kompiluje wersję aplikacji.When you press F5 or choose Build Solution from the Build menu, Visual Studio compiles the Release version of the application. Można go przetestować, tak jak w przypadku wersji do debugowania.You can test it as you did the Debug version.

Kolejne krokiNext steps

W tym samouczku użyto narzędzi debugowania programu Visual Studio.In this tutorial, you used Visual Studio debugging tools. W następnym samouczku zostanie opublikowana wersja aplikacji, którą można wdrożyć.In the next tutorial, you publish a deployable version of the app.