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
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.
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.
Aby ustawić punkt przerwania, kliknij w wypowiedzi po lewej stronie
doWork
wywołania funkcji (lub wybierz wiersz kodu i naciśnij klawisz F9).Teraz naciśnij klawisz F5 (lub wybierz pozycję Debuguj > rozpocznij debugowanie).
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ń.
Nawigowanie po kodzie
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 Uruchom, aby kliknąć, a następnie naciśnij przycisk Uruchom, aby kliknąć.
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
W bieżącym wierszu kodu (oznaczony żółtym wskaźnikiem wykonywania) umieść wskaźnik myszy na
c1
obiekcie, aby wyświetlić etykietkę danych.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.Rozwiń etykietkę danych, aby przyjrzeć się bieżącym wartościom
c1
właściwości obiektu.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ż.
Kliknij drugie wystąpienie elementu
c2.front()
i zmień wartośćc2.front()
nac2.back()
.Naciśnij klawisz F10 (lub krok debugowania>) kilka razy, aby przejść do debugera i wykonać edytowany kod.
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.