Udostępnij za pomocą


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

Debuger Visual Studio oferuje wiele potężnych funkcji, które pomogą Ci debugować Twoje aplikacje. Ten temat zapewnia szybki sposób na poznanie niektórych podstawowych funkcji.

Tworzenie nowego projektu

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

    Jeśli okno uruchamiania nie jest jeszcze otwarte, wybierz pozycję Okno uruchamiania pliku>. W oknie Start wybierz pozycję Utwórz nowy projekt. W polu wyszukiwania wpisz "Pusty projekt", a następnie wybierz szablon Pusty projekt języka C++.

    Jeśli nie widzisz szablonu projektu, otwórz Instalatora programu Visual Studio. Wybierz obciążenie rozwojowe aplikacji desktopowych z C++, a następnie wybierz Modyfikuj.

    Program Visual Studio tworzy projekt.

    Utwórz nowy plik źródłowy o nazwie MyDbgApp.cpp

  2. W 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, który wskazuje, gdzie Visual Studio powinno wstrzymać działanie Twojego kodu, abyś mógł przeanalizować wartości zmiennych, zachowanie pamięci lub sprawdzić, czy dany segment kodu jest wykonywany. Jest to najbardziej podstawowa funkcja debugowania.

  1. Aby ustawić punkt przerwania, kliknij w margines po lewej stronie od wywołania funkcji doWork (lub zaznacz linię kodu i naciśnij F9).

    Ustaw punkt przerwania

  2. Teraz naciśnij F5 (lub wybierz Debugowanie > Rozpocznij debugowanie).

    Trafiono na punkt przerwania

    Debugger zatrzymuje się tam, gdzie 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.

    Wskazówka

    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żesz również użyć punktów przerwań do sprawdzania wartości adresów (szukaj NULL) i liczników referencji.

Istnieją różne polecenia umożliwiające kontynuowanie działania debugera. Pokazujemy przydatne polecenie nawigacji po kodzie, które jest dostępne od wersji Visual Studio 2017.

Podczas zatrzymania w punkcie przerwania, najedź kursorem na instrukcję c1.push_back(20), aż pojawi się zielony przycisk Uruchom do kliknięciaUruchom do Kliknięcia, a następnie naciśnij przycisk Uruchom do kliknięcia.

Uruchom, aby kliknąć

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

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

Inspekcja zmiennych w datatipie

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

    Wyświetl etykietkę danych

    Wskazówka danych pokazuje bieżącą wartość zmiennej c1 i umożliwia przeglądanie 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ń wskazówkę danych, aby zobaczyć bieżące wartości właściwości obiektu c1.

  3. Jeśli chcesz przypiąć dymek danych, aby móc kontynuować obserwowanie wartości c1 podczas wykonywania kodu, kliknij ikonę małego 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 c2.front() i zmień c2.front() na c2.back().

  2. Naciśnij F10 (lub Debug > Step Over) kilka razy, aby przesunąć debugger i wykonać zmodyfikowany kod.

    Edytuj i kontynuuj

    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 używania funkcji edytowania i kontynuacji oraz ograniczeń funkcji, zobacz Edit and Continue.

Następne kroki

W tym samouczku nauczyłeś się, jak uruchomić debugger, przejść przez kod i sprawdzić zmienne. Możesz chcieć uzyskać ogólny przegląd funkcji debuggera wraz z odnośnikami do dalszych informacji.