Szybki start: Debugowanie z C++ za pomocą debugera Visual Studio

W tym przewodniku Szybki start dowiesz się, jak używać debugera Visual Studio do debugowania natywnego kodu C++. Ten artykuł zawiera szybki sposób na zapoznanie się z niektórymi podstawowymi funkcjami pracy w debugerze.

Jeśli nie masz programu Visual Studio, możesz zainstalować bezpłatną wersję próbną ze strony pobierania programu Visual Studio.

Tworzenie nowego projektu

Zacznij od utworzenia nowego projektu, więc masz kod do zaewidencjonowania w debugerze.

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

    • Jeśli okno startowe nie jest otwarte, wybierz pozycję Plik>Okno startowe.

    • W oknie startowym wybierz pozycję Utwórz nowy projekt.

  2. W oknie Tworzenie nowego projektu ustaw filtry i wyszukaj szablon projektu.

    • W polu Wyszukaj szablony wprowadź puste.

    • Rozwiń listę rozwijaną Język i wybierz pozycję C++.

  3. Na liście wyników wybierz szablon Empty Project dla języka C++, a następnie wybierz pozycję Dalej.

    Jeśli nie widzisz szablonu Empty Project dla języka C++, wybierz opcję Continue bez kodu.

    1. Wybierz Tools>Pobierz narzędzia i funkcje... który otwiera Instalator Visual Studio.

    2. W oknie Instalatora zaznacz pole wyboru obciążenia Programowanie aplikacji klasycznych w języku C++, a następnie wybierz pozycję Modyfikuj.

      Instalacja programu Visual Studio zostanie zaktualizowana tak, aby obejmowała wybrane obciążenie robocze języka C++.

    3. Po zakończeniu aktualizacji wybierz Plik>Okno startowe i postępuj zgodnie z poprzednimi instrukcjami, aby wybrać wymagany szablon.

  4. Skonfiguruj nowy projekt:

    1. Wprowadź nazwę Project i Nazwa rozwiązania lub użyj wartości domyślnych.

    2. Użyj domyślnej lokalizacji lub wybierz pozycję Przeglądaj (...), aby utworzyć projekt w innym folderze.

    3. Wybierz Utwórz.

    Visual Studio tworzy nowy projekt i dodaje pliki projektu w określonym folderze.

Dodawanie pliku projektu

Dodaj plik kodu, aby mieć zawartość do przetestowania w debugerze.

  1. W okienku Eksplorator rozwiązań, Kliknij prawym przyciskiem myszy <project-name> i wybierz Dodaj>Nowy element.

    Jeśli nie widzisz okienka Eksplorator rozwiązań wybierz pozycję View>Eksplorator rozwiązań.

  2. W oknie dialogowym Dodawanie nowego elementu wprowadź nazwę pliku MyDbgApp.cpp, a następnie wybierz pozycję Dodaj.

    Plik zostanie otwarty w edytorze kodu.

  3. Dodaj następujący kod do nowego pliku.

    #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();
    }
    
  4. Zapisz zmiany w pliku za pomocą skrótu klawiaturowego Ctrl+S .

Ustawianie punktu przerwania

breakpoint to znacznik wskazujący, gdzie Visual Studio powinien zawiesić uruchomiony kod. Po ustawieniu punktu przerwania możesz przyjrzeć się bieżącym wartościom zmiennych, sprawdzić zachowanie pamięci i sprawdzić, czy działa określona gałąź kodu. Punkty przerwania to najbardziej podstawowa funkcja debugowania.

  1. Aby ustawić punkt przerwania, znajdź w kodzie wywołanie funkcji doWork(), a następnie kliknij na lewym marginesie przy tym samym wierszu.

    Po ustawieniu punktu przerwania na lewym marginesie przy odpowiednim wierszu kodu pojawia się czerwona kropka.

    Screenshot pokazujący, jak ustawić punkt przerwania w debugerze Visual Studio.

    Screenshot pokazujący, jak ustawić punkt przerwania w debugerze Visual Studio 2022.

  2. Rozpocznij debugowanie przy użyciu skrótu klawiaturowego F5 (lub wybierz pozycję Debuguj>rozpocznij debugowanie).

    Screenshot przedstawiający wstrzymany debuger w ustawionym punkcie przerwania w Visual Studio.

    Zrzut ekranu pokazujący debuger zatrzymany na ustawionym punkcie przerwania w programie Visual Studio 2022.

    Wykonywanie kodu jest wstrzymywane bezpośrednio przed wywołaniem doWork() funkcji.

    Debugger zatrzymuje się tam, gdzie ustawiono punkt przerwania. Żółta strzałka identyfikuje instrukcję, w której debuger wstrzymuje wykonywanie aplikacji.

    Wskazówka

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

Ustawianie warunkowych punktów przerwania

Jeśli ustawisz 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.

Takie podejście pomaga zapewnić, że kod jest zawieszony tylko wtedy, gdy zostaną spełnione określone warunki. Warunkowy punkt przerwania może zaoszczędzić czas, a także ułatwić debugowanie problemów, które są trudne do odtworzenia.

Zapoznaj się z kodem

Visual Studio udostępnia kilka różnych sposobów poinstruowania debugera o kontynuowaniu wykonywania aplikacji. Poniższy przykład przedstawia przydatne polecenie do analizowania kodu krok po kroku.

Gdy kod jest wstrzymany w punkcie przerwania, umieść kursor na instrukcjic1.push_back(20), aż zobaczysz zieloną ikonę Uruchom, aby kliknąć (uruchom wykonanie tutaj). Wybierz ikonę.

Zrzut ekranu pokazujący, jak korzystać z akcji Uruchom do kliknięcia w debugerze Visual Studio.

Gdy kod jest wstrzymany w punkcie przerwania, umieść kursor na instrukcjic1.AddLast(20), aż zobaczysz zieloną ikonę Uruchom, aby kliknąć (uruchom wykonanie tutaj). Wybierz ikonę.

Zrzut ekranu pokazujący, jak używać akcji Run to Click w debugerze Visual Studio 2022.

Aplikacja kontynuuje wykonywanie, wywołując doWork, i zatrzymuje się w wierszu kodu, w którym wybrano opcję Uruchom do kliknięcia.

Często używane polecenia klawiatury do przechodzenia przez kod to F10 i F11. Aby uzyskać bardziej szczegółowe instrukcje, zobacz Przegląd debugera Visual Studio.

Inspekcja zmiennych w podpowiedziach danych

Stan zmiennych można sprawdzić za pomocą funkcji etykiet danych.

  1. W bieżącym wierszu kodu (oznaczonym żółtym wskaźnikiem wykonywania) umieść kursor nad obiektem c1 , aby zobaczyć poradę dotyczącą danych.

    Screenshot przedstawiający sposób wyświetlania wskazówek dotyczących danych zmiennych kodu w debugerze Visual Studio.

    Screenshot przedstawiający sposób wyświetlania wskazówek dotyczących danych zmiennych kodu w debugerze Visual Studio 2022

    Porada dotycząca danych pokazuje bieżącą wartość zmiennej c1 i umożliwia sprawdzenie jej właściwości.

    Jeśli podczas debugowania widzisz nieoczekiwaną wartość zmiennej, prawdopodobnie występuje usterka. Usterka może znajdować się w kodzie, który wywołuje zmienną lub w poprzednim wierszu.

  2. Rozwiń podpowiedź danych, aby zobaczyć bieżące wartości właściwości obiektu c1.

  3. Aby nadal sprawdzać wartość c1 podczas wykonywania kodu, wybierz ikonę pinezki w etykietce danych.

    Akcja przypięcia pozostawia dymek z danymi otwarty. W miarę wykonywania kodu wartość przypiętej wskazówki zmienia się, aby pokazać bieżący stan obserwowanego obiektu.

    Przypiętą wskazówkę można przenieść w dowolne miejsce w środowisku IDE, dzięki czemu nie zasłania innych elementów podczas debugowania.

Włącz gorące przeładowanie podczas debugowania

Jeśli podczas debugowania widzisz zmianę, którą chcesz przetestować w kodzie, możesz użyć funkcji Przeładowywanie na gorąco (wcześniej o nazwie Edit i Continue).

  1. Wybierz drugie wystąpienie instrukcji c2.front() i zmień kod na c2.back().

  2. Naciśnij F10 kilka razy (lub kilka razy wybierz polecenie Debug>Przejdź dalej), aby przesunąć debuger i wykonać edytowany kod.

    Animation, która pokazuje, jak edytować i kontynuować pracę z funkcją

    Animacja, która pokazuje, jak edytować kod i kontynuować debugowanie w debugerze Visual Studio 2022.

    F10 przesuwa uruchamianie debugera o jedną instrukcję na raz, ale przechodzi nad funkcjami zamiast wchodzić do nich (pomijany kod nadal się wykonuje).

Aby uzyskać więcej informacji na temat funkcji i ograniczeń, zobacz Konfigurowanie Przeładowywanie na gorąco.

Następny krok