Udostępnij za pośrednictwem


Samouczek: debugowanie aplikacji konsolowej .NET przy użyciu programu Visual Studio

W tym samouczku przedstawiono narzędzia debugowania dostępne w programie Visual Studio.

Ważny

Wszystkie skróty klawiaturowe są oparte na wartościach domyślnych programu Visual Studio. Skróty klawiaturowe mogą się różnić. Aby uzyskać więcej informacji, zobacz Skróty klawiaturowe w programie Visual Studio.

Warunki wstępne

Użyj konfiguracji kompilacji Debug

Debug i Release to wbudowane konfiguracje kompilacji programu Visual Studio. Używasz konfiguracji kompilacji Debug do debugowania, a konfiguracji Release do końcowej dystrybucji wydania.

W konfiguracji debugowania program jest kompilowany z pełnymi symbolicznymi informacjami debugowania i bez optymalizacji. Optymalizacja komplikuje debugowanie, ponieważ relacja między kodem źródłowym i wygenerowanymi instrukcjami jest bardziej złożona. Konfiguracja wydania programu nie zawiera żadnych symbolicznych informacji debugowania i jest w pełni zoptymalizowana.

Domyślnie program Visual Studio używa konfiguracji kompilacji debugowania, więc nie trzeba jej zmieniać przed debugowaniem.

  1. Uruchom program Visual Studio.

  2. Otwórz projekt utworzony w Utwórz aplikację konsolową platformy .NET przy użyciu programu Visual Studio.

    Bieżąca konfiguracja kompilacji jest wyświetlana na pasku narzędzi. Na poniższym obrazie paska narzędzi pokazano, że program Visual Studio jest skonfigurowany do kompilowania wersji debugowania aplikacji:

    pasek narzędzi programu Visual Studio z wyróżnionym debugowaniem

Ustawianie punktu przerwania

Punkt przerwania tymczasowo przerywa wykonywanie aplikacji przed wykonaniem wiersza z punktem przerwania.

  1. Ustaw punkt przerwania w wierszu, który wyświetla nazwę, datę i godzinę, klikając lewy margines okna kodu w tym wierszu. Lewy margines znajduje się po lewej stronie numerów wierszy. Inne sposoby ustawiania punktu przerwania to umieszczenie kursora w wierszu kodu, a następnie naciśnięcie F9 lub wybranie Debug>Przełącz punkt przerwania na pasku menu.

    Jak pokazano na poniższej ilustracji, program Visual Studio wskazuje wiersz, w którym ustawiono punkt przerwania, wyróżniając go i wyświetlając czerwoną kropkę na lewym marginesie.

    okno programu Visual Studio z ustawionym punktem przerwania

  2. Naciśnij F5, aby uruchomić program w trybie debugowania. Innym sposobem rozpoczęcia debugowania jest wybranie Debug>Rozpocznij debugowanie z menu.

  3. Wprowadź ciąg w oknie konsoli, gdy program wyświetli monit o nazwę, a następnie naciśnij Enter.

  4. Wykonanie programu zatrzymuje się po osiągnięciu punktu przerwania i przed wykonaniem metody Console.WriteLine. W oknie Locals są wyświetlane wartości zmiennych zdefiniowanych w aktualnie wykonywanej metodzie.

    zrzut ekranu przedstawiający punkt przerwania w programie Visual Studio

Korzystanie z okna natychmiastowego

Okno Bezpośrednie pozwala na interakcję z aplikacją, którą debugujesz. Możesz interaktywnie zmienić wartość zmiennych, aby zobaczyć, jak ma to wpływ na program.

  1. Jeśli okno natychmiastowej nie jest widoczne, wyświetl je, wybierając Debugowaniewindowsnatychmiastowe.

  2. Wprowadź name = "Gracie" w oknie Natychmiastowe i naciśnij Enter.

  3. W oknie Natychmiastowe wprowadź currentDate = DateTime.Parse("2019-11-16T17:25:00Z").ToUniversalTime() i naciśnij klawisz Enter.

    W oknie natychmiastowym wyświetla się wartość zmiennej tekstowej oraz właściwości wartości DateTime. Ponadto wartości zmiennych są aktualizowane w oknie Locals.

    lokalne i natychmiastowe systemy Windows w programie Visual Studio 2019

  4. Naciśnij F5, aby kontynuować wykonywanie programu. Można też kontynuować, wybierając Debug >Kontynuuj z menu.

    Wartości wyświetlane w oknie konsoli odpowiadają zmianom, które wprowadziłeś w oknie Natychmiastowym.

    okno konsoli z wyświetlonymi wprowadzonymi wartościami

  5. Naciśnij dowolny, aby zamknąć aplikację i zatrzymać debugowanie.

Ustawianie warunkowego punktu przerwania

Program wyświetla ciąg wprowadzony przez użytkownika. Co się stanie, jeśli użytkownik nic nie wprowadzi? Można to przetestować za pomocą przydatnej funkcji debugowania zwanej warunkowym punktem przerwania.

  1. Kliknij prawym przyciskiem myszy czerwoną kropkę reprezentującą punkt przerwania. W menu kontekstowym wybierz pozycję Warunki, aby otworzyć okno dialogowe Ustawienia punktu przerwania. Wybierz pole Warunki, jeśli jeszcze nie jest zaznaczone.

    Edytor wyświetlający panel ustawień punktu przerwania — w języku C#

  2. W przypadkuwyrażenia warunkowego wprowadź następujący kod w polu, który pokazuje przykładowy kod, który sprawdza, czy ma wartość 5.

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

    Za każdym razem, gdy punkt przerwania zostanie trafiony, debuger wywołuje metodę String.IsNullOrEmpty(name) i przerywa działanie w tym wierszu tylko wtedy, gdy wywołanie metody zwraca true.

    Zamiast wyrażenia warunkowego można określić licznik trafień , który przerywa wykonanie programu przed wykonaniem instrukcji określoną liczbę razy. Inną opcją jest określenie warunku filtru , który przerywa wykonywanie programu na podstawie takich atrybutów jak identyfikator wątku, nazwa procesu lub nazwa wątku.

  3. Wybierz pozycję Zamknij, aby zamknąć okno dialogowe.

  4. Uruchom program z debugowaniem, naciskając F5.

  5. W oknie konsoli naciśnij Enter po wyświetleniu monitu o wprowadzenie nazwy.

  6. Ponieważ określony warunek (name jest null lub String.Empty) został spełniony, wykonanie programu zatrzymuje się po osiągnięciu punktu przerwania i przed wykonaniem metody Console.WriteLine.

  7. Wybierz okno Lokalne, które pokazuje wartości zmiennych lokalnych dla aktualnie wykonywanej metody. W tym przypadku Main jest aktualnie wykonywaną metodą. Zwróć uwagę, że wartość zmiennej name jest "", lub String.Empty.

  8. Upewnij się, że wartość jest pustym ciągiem, wprowadzając następującą instrukcję w oknie Natychmiastowym i naciskając Enter. Wynik jest true.

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

    Znak zapytania kieruje bezpośrednie okno, aby ocenić wyrażenie.

    Okno Natychmiastowe zwraca wartość true po wykonaniu instrukcji — C#

  9. Naciśnij F5, aby kontynuować wykonywanie programu.

  10. Naciśnij dowolny, aby zamknąć okno konsoli i zatrzymać debugowanie.

  11. Wyczyść punkt przerwania, klikając kropkę na lewym marginesie okna kodu. Inne sposoby czyszczenia punktu przerwania polegają na naciśnięciu F9 lub wybraniu Debug > Przełącz punkt przerwania przy zaznaczonym wierszu kodu.

Przechodzenie przez program

Visual Studio umożliwia przechodzenie krok po kroku przez linie programowe i monitorowanie jego wykonywania. Zazwyczaj należy ustawić punkt przerwania i śledzić przepływ programu przez niewielką część kodu programu. Ponieważ ten program jest mały, można przejść przez cały program.

  1. Wybierz pozycję Debug>Wejdź do. Innym sposobem debugowania jednej instrukcji naraz jest naciśnięcie F11.

    Program Visual Studio podświetla i pokazuje strzałkę obok następnej linii wykonywania.

    C#

    wejście do metody w języku C# w programie Visual Studio —

    Visual Basic

    krok do metody w programie Visual Studio — Visual Basic

    W tym momencie okno Locals pokazuje, że tablica jest pusta, a i mają wartości domyślne. Ponadto program Visual Studio otworzył puste okno konsoli.

  2. Naciśnij F11. Program Visual Studio wyróżnia teraz następną linię do wykonania. Okno Lokalne jest niezmienione, a okno konsoli nadal jest puste.

    C#

    krok w źródle metody języka C# programu Visual Studio —

    Visual Basic

    krok do źródła metody w programie Visual Studio — Visual Basic

  3. Naciśnij F11. Visual Studio wyróżnia instrukcję, która zawiera przypisanie zmiennej name. W oknie Locals widać, że name jest null, a w oknie konsoli zostanie wyświetlony ciąg "Jaka jest Twoja nazwa?".

  4. Odpowiedz na monit, wprowadzając ciąg w oknie konsoli i naciskając Wprowadź. Konsola nie odpowiada, a wprowadzony ciąg nie jest wyświetlany w oknie konsoli, ale metoda Console.ReadLine mimo to przechwytuje dane wejściowe.

  5. Naciśnij F11. Program Visual Studio wyróżnia instrukcję, która zawiera przypisanie zmiennej currentDate. Okno Locals pokazuje wartość zwróconą przez wywołanie metody Console.ReadLine. W oknie konsoli zostanie również wyświetlony ciąg wprowadzony w wierszu polecenia.

  6. Naciśnij F11. Okno Locals pokazuje wartość zmiennej currentDate po przypisaniu z właściwości DateTime.Now. Okno konsoli pozostaje niezmienione.

  7. Naciśnij F11. Program Visual Studio wywołuje metodę Console.WriteLine(String, Object, Object). W oknie konsoli zostanie wyświetlony sformatowany ciąg.

  8. Wybierz pozycję Debugowanie>. Innym sposobem zatrzymania wykonywania krok po kroku jest naciśnięcie Shift+F11.

    W oknie konsoli zostanie wyświetlony komunikat i zaczeka na naciśnięcie.

  9. Naciśnij dowolny, aby zamknąć okno konsoli i zatrzymać debugowanie.

Użyj konfiguracji kompilacji Release

Po przetestowaniu wersji Debug aplikacji, należy również skompilować i przetestować wersję Release. Wersja wydania zawiera optymalizacje kompilatora, które czasami negatywnie wpływają na zachowanie aplikacji. Na przykład optymalizacje kompilatora, które mają na celu poprawę wydajności, mogą tworzyć warunki wyścigu w aplikacjach wielowątkowych.

Aby zbudować i przetestować wersję Release aplikacji konsolowej, zmień konfigurację kompilacji na pasku narzędzi z Debug na Release.

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

Po naciśnięciu F5 lub wybraniu build solution z menu Build program Visual Studio kompiluje wersję wydania aplikacji. Można ją przetestować tak, jak przetestowałeś wersję debug.

Następne kroki

W tym samouczku korzystałeś z narzędzi debugowania Visual Studio. W następnym samouczku opublikujesz wersję gotową do wdrożenia aplikacji.