Szybki start: debugowanie przy użyciu języka C++ przy użyciu debugera programu Visual Studio

Debuger programu Visual Studio udostępnia wiele zaawansowanych funkcji ułatwia debugowanie aplikacji. Ten temat zawiera szybki sposób na zapoznanie się z niektórymi podstawowymi funkcjami.

Tworzenie nowego projektu

  1. Otwórz program Visual Studio i utwórz projekt.

    Naciśnij klawisz Esc , aby zamknąć okno uruchamiania. Wpisz Ctrl + Q , aby otworzyć pole wyszukiwania, wpisz c ++, wybierz pozycję Szablony, a następnie wybierz pozycję Utwórz nowy projekt aplikacji konsolowej. W wyświetlonym oknie dialogowym wybierz pozycję Utwórz.

    Jeśli nie widzisz szablonu projektu Aplikacja konsolowa systemu Windows, przejdź do pozycji Narzędzia Pobierz narzędzia>i funkcje..., co spowoduje otwarcie Instalator programu Visual Studio. Zostanie uruchomiona Instalator programu Visual Studio. Wybierz pakiet roboczy Programowanie aplikacji klasycznych przy użyciu języka C++ , a następnie wybierz pozycję Modyfikuj.

    Program Visual Studio tworzy projekt.

  2. W pliku MyDbgApp.cpp zastąp następujący kod

    int main()
    {
        return 0;
    }
    

    z tym kodem (nie usuwaj #include "stdafx.h"):

    #include <list>
    #include <iostream>
    
    using namespace std;
    
    void doWork()
    {
        list <int> c1;
    
        c1.push_back(10);
        c1.push_back(20);
    
        const list <int> c2 = c1;
        const int &i = c2.front();
        const int &j = c2.front();
        cout << "The first element is " << i << endl;
        cout << "The second element is " << j << endl;
    
    }
    
    int main()
    {
        doWork();
    }
    

Ustawianie punktu przerwania

Punkt przerwania to znacznik wskazujący, gdzie program Visual Studio powinien zawiesić uruchomiony kod, dzięki czemu możesz przyjrzeć się wartościom zmiennych lub zachowaniu pamięci, czy też niezależnie od tego, czy jest uruchamiana gałąź kodu. Jest to najbardziej podstawowa funkcja debugowania.

  1. Aby ustawić punkt przerwania, kliknij w wypowiedzi po lewej stronie doWork wywołania funkcji (lub wybierz wiersz kodu i naciśnij klawisz F9).

    Set a breakpoint

  2. Teraz naciśnij klawisz F5 (lub wybierz pozycję Debuguj > rozpocznij debugowanie).

    Hit a breakpoint

    Debuger wstrzymuje miejsce, w którym ustawiono punkt przerwania. Instrukcja, w której debuger i wykonywanie aplikacji są wstrzymane, jest wskazywane przez żółtą strzałkę. Wiersz z doWork wywołaniem funkcji nie został jeszcze wykonany.

    Napiwek

    Jeśli masz punkt przerwania w pętli lub rekursji lub jeśli masz wiele punktów przerwania, które często przechodzisz, użyj warunkowego punktu przerwania, aby upewnić się, że kod jest zawieszony tylko w przypadku spełnienia określonych warunków. Warunkowy punkt przerwania oszczędza czas i może również ułatwić debugowanie problemów, które są trudne do odtworzenia.

    Podczas próby debugowania błędów związanych z pamięcią w języku C++można również użyć punktów przerwania, aby sprawdzić wartości adresów (poszukaj wartości NULL) i liczby odwołań.

Istnieją różne polecenia, aby poinstruować debugera, aby kontynuować. Pokazujemy przydatne polecenie nawigacji kodu dostępne od programu Visual Studio 2017.

Podczas wstrzymania w punkcie przerwania umieść kursor na instrukcjic1.push_back(20), aż pojawi się zielony przycisk Run to Click Uruchom, aby kliknąć, a następnie naciśnij przycisk Uruchom, aby kliknąć.

Run to click

Aplikacja kontynuuje wykonywanie, wywołując metodę doWork, i wstrzymuje się w wierszu kodu, w którym kliknięliśmy przycisk.

Typowe polecenia klawiatury używane do przechodzenia przez kod obejmują F10 i F11. Aby uzyskać bardziej szczegółowe instrukcje, zobacz Pierwsze spojrzenie na debuger.

Sprawdzanie zmiennych w etykietce danych

  1. W bieżącym wierszu kodu (oznaczony żółtym wskaźnikiem wykonywania) umieść wskaźnik myszy na c1 obiekcie, aby wyświetlić etykietkę danych.

    View a datatip

    Etykietka danych pokazuje bieżącą wartość zmiennej c1 i umożliwia sprawdzenie jej właściwości. Jeśli podczas debugowania widzisz wartość, której nie oczekujesz, prawdopodobnie masz usterkę w poprzednim lub wywołującym wiersze kodu.

  2. Rozwiń etykietkę danych, aby przyjrzeć się bieżącym wartościom c1 właściwości obiektu.

  3. Jeśli chcesz przypiąć etykietkę danych, aby kontynuować wyświetlanie wartości c1 podczas wykonywania kodu, kliknij małą ikonę pinezki. (Przypiętą etykietkę danych można przenieść do wygodnej lokalizacji).

Edytowanie kodu i kontynuowanie debugowania

Jeśli zidentyfikujesz zmianę, którą chcesz przetestować w kodzie w trakcie sesji debugowania, możesz to zrobić również.

  1. Kliknij drugie wystąpienie elementu c2.front() i zmień wartość c2.front() na c2.back().

  2. Naciśnij klawisz F10 (lub krok debugowania>) kilka razy, aby przejść do debugera i wykonać edytowany kod.

    Edit and continue

    Klawisz F10 rozwija pojedynczą instrukcję debugera, ale kroki dotyczące funkcji zamiast ich przechodzenia do nich (kod pomijany nadal jest wykonywany).

Aby uzyskać więcej informacji na temat używania ograniczeń funkcji edycji i kontynuacji, zobacz Edytowanie i kontynuowanie.

Następne kroki

W tym samouczku przedstawiono sposób uruchamiania debugera, przechodzenia przez kod i inspekcji zmiennych. Możesz uzyskać ogólne informacje na temat funkcji debugera wraz z linkami do dodatkowych informacji.