3.8 — Korzystanie ze zintegrowanego debugera: Oglądanie zmiennych

W poprzednich lekcjach (3.6 — Korzystanie ze zintegrowanego debugera: Stepping i 3.7 -- Korzystanie ze zintegrowanego debugera: Uruchamianie i breakpoints), nauczyłeś się używać debugera do śledzenia ścieżki wykonania programu. Jednak przejście przez program to tylko połowa tego, co czyni debuger użytecznym. Debuger umożliwia także sprawdzanie wartości zmiennych podczas wykonywania kolejnych czynności w kodzie, a wszystko to bez konieczności modyfikowania kodu.

Tak jak w poprzednich lekcjach, w naszych przykładach będziemy używać programu Visual Studio — jeśli używasz innego IDE/debugera, polecenia mogą mieć nieco inne nazwy lub znajdować się w różnych lokalizacjach.

Ostrzeżenie

W przypadku powrotu upewnij się, że projekt został skompilowany przy użyciu konfiguracji kompilacji debugowania (więcej informacji można znaleźć w 0.9 — Konfigurowanie kompilatora: Konfiguracje kompilacji więcej informacji). Jeśli zamiast tego kompilujesz projekt przy użyciu konfiguracji wydania, funkcjonalność debugera może nie działać poprawnie.

Obserwowanie zmiennych

Obserwowanie zmiennej to proces sprawdzania wartości zmiennej podczas wykonywania programu w trybie debugowania. Większość debuggerów zapewnia kilka sposobów, aby to zrobić.

Przyjrzyjmy się przykładowemu programowi:

#include <iostream>

int main()
{
	int x{ 1 };
	std::cout << x << ' ';

	x = x + 2;
	std::cout << x << ' ';

	x = x + 3;
	std::cout << x << ' ';

	return 0;
}

To całkiem prosty przykładowy program — wypisuje liczby 1, 3 i 6.

Najpierw uruchom do kursor do wiersza 6.

W tym momencie zmienna x została już utworzona i zainicjowana wartością 1, więc kiedy sprawdzamy wartość x, powinniśmy spodziewać się wartości 1.

Najłatwiejszym sposobem sprawdzenia wartości prostej zmiennej, takiej jak x, jest najechanie myszką na zmienną x. Niektóre nowoczesne debuggery obsługują tę metodę sprawdzania prostych zmiennych i jest to najprostsza metoda.

W przypadku użytkowników Code::Blocks

Jeśli używasz Code::Blocks, ta opcja jest (w niewytłumaczalny sposób) domyślnie wyłączona. Włączmy to. Najpierw udaj się do menu Ustawienia > Debuger…. Następnie w węźle Debugger GDB/CDB wybierz profil Domyślny . Na koniec zaznacz pole Oceń wyrażenie pod kursorem.

Najedź kursorem myszy na zmienną x w linii 6, a powinieneś zobaczyć coś takiego:

Zauważ, że możesz najechać kursorem na dowolną zmienną x, a nie tylko tę w bieżącej linii. Na przykład, jeśli najedziemy kursorem na x w linii 12, zobaczymy tę samą wartość:

Jeśli używasz Visual Studio, możesz także użyć QuickWatch. Podświetl nazwę zmiennej x za pomocą myszy, a następnie wybierz „QuickWatch” z menu wyświetlanego po kliknięciu prawym przyciskiem myszy.

Spowoduje to wyświetlenie podokna zawierającego bieżącą wartość zmiennej:

Śmiało zamknij program QuickWatch, jeśli go otworzyłeś.

Przyjrzyjmy się teraz zmianie tej zmiennej podczas wykonywania kolejnych czynności w programie. Wybierz przekroczenie dwa razy lub uruchom do kursor do linii 9. Zmienna x powinna teraz mieć wartość 3. Sprawdź i upewnij się, że tak!

Okno podglądu

Używanie najechania myszką lub metod QuickWatch do sprawdzania zmiennych jest w porządku, jeśli chcesz poznać wartość zmiennej w określonym momencie, ale nie jest szczególnie dobrze dostosowane do obserwowania zmiany wartości zmiennej podczas uruchamiania kodu, ponieważ musisz ciągle ponownie najeżdżać kursorem/ponownie wybierać zmienną.

Aby rozwiązać ten problem problemu, wszystkie nowoczesne zintegrowane debugery udostępniają inną funkcję zwaną oknem podglądu. Okno podglądu to okno, w którym możesz dodać zmienne, które chcesz stale sprawdzać, a zmienne te będą aktualizowane w miarę wykonywania kolejnych czynności w programie. Okno podglądu może już znajdować się na ekranie po wejściu w tryb debugowania, ale jeśli tak nie jest, możesz je wyświetlić za pomocą poleceń okna IDE (zwykle znajdują się one w menu Widok lub Debugowanie).

W przypadku użytkowników programu Visual Studio

W programie Visual Studio okno podglądu można znaleźć pod adresem Menu debugowania > Windows > Obejrzyj > Obejrzyj 1. Pamiętaj, że aby włączyć tę opcję, musisz być w trybie debugowania, więc step in najpierw swój program.

Gdzie pojawi się to okno (zadokowane po lewej, prawej lub u dołu) może się różnić. Możesz zmienić miejsce jego zadokowania, przeciągając kartę Obejrzyj 1 na inną stronę okna aplikacji.

W przypadku użytkowników Code::Blocks

W Code::Blocks okno podglądu można znaleźć w Menu debugowania > Debugowanie okien > Zegarki. To okno prawdopodobnie pojawi się jako osobne okno. Możesz zadokować je w oknie głównym, przeciągając je.

Dla użytkowników VS Code

W VS Code okno zegarka pojawia się w trybie debugowania, zadokowane po lewej stronie nad stosem wywołań.

Powinieneś teraz zobaczyć coś takiego:

Okno zegarków może już zawierać cokolwiek lub nie.

Zazwyczaj istnieją dwa różne sposoby dodawania zmiennych do zegarka okno:

  1. Wywołaj okno podglądu i wpisz nazwę zmiennej, którą chcesz obserwować w skrajnej lewej kolumnie okna podglądu.
  2. W oknie kodu kliknij prawym przyciskiem myszy zmienną, którą chcesz obserwować, i wybierz Dodaj zegarek (Visual Studio) lub Watch x (zastąp x nazwą zmiennej) (Code::Blocks).

Jeśli nie jesteś jeszcze w sesji debugowania ze znacznikiem wykonania w linii 9 swojego programu, rozpocznij nową sesję debugowania i uruchom do kursor do linii 9.

Teraz śmiało dodaj zmienną „x” do swojej listy obserwowanych. Powinieneś teraz zobaczyć to:

Teraz przekroczenie dwa razy lub uruchom do kursor do linii 12 i powinieneś zobaczyć wartość x zmiana z 3 Do 6.

Zmienne, które wychodzą poza zakres (np. zmienna lokalna wewnątrz funkcji, która już zwróciła się do osoby wywołującej) pozostaną w oknie zegarka, ale generalnie będą albo oznaczone jako „niedostępne”, albo mogą pokazywać ostatnią znaną wartość, ale wyszarzone. Jeśli zmienna powróci do zakresu (np. funkcja zostanie ponownie wywołana), jej wartość zacznie się ponownie wyświetlać. Dlatego dobrze jest pozostawiać zmienne w oknie podglądu, nawet jeśli wykraczają one poza zakres.

Korzystanie z zegarków to najlepszy sposób obserwowania zmian wartości zmiennej w czasie podczas wykonywania programu.

Ustawianie punktu przerwania dla obserwowanych zmiennych

Niektóre debugery pozwalają ustawić punkt przerwania na obserwowanej zmiennej, a nie na linii. Spowoduje to zatrzymanie wykonywania programu za każdym razem, gdy zmieni się wartość tej zmiennej.

Na przykład ustawienie takiego punktu przerwania na zmiennej x w powyższym programie spowoduje zatrzymanie debugera po wykonaniu linii 8 i 11 (w tym miejscu zmienia się wartość x ).

W przypadku użytkowników programu Visual Studio

W Visual Studio upewnij się, że twoja zmienna jest obserwowana. Następnie step in swój program i przejdź do okna podglądu. Kliknij zmienną prawym przyciskiem myszy i wybierz „Przerwij, gdy wartość się zmieni”.

Będziesz musiał ponownie włączyć opcję „Przerwij, gdy wartość się zmieni” za każdym razem, gdy rozpoczniesz sesję debugowania.

Okno podglądu może również oceniać wyrażenia

Okno podglądu pozwoli Ci także oceniać proste wyrażenia. Jeśli jeszcze tego nie zrobiłeś, uruchom do kursor do wiersza 12. Następnie spróbuj wprowadzić x + 2 w oknie podglądu i zobacz, co się stanie (powinno otrzymać wynik 8).

Możesz także zaznaczyć wyrażenie w swoim kodzie, a następnie sprawdzić wartość tego wyrażenia po najechaniu myszką lub dodając je do okna podglądu za pomocą kontekstu kliknięcia prawym przyciskiem myszy menu.

Ostrzeżenie

Identyfikatory w obserwowanych wyrażeniach zostaną ocenione do swoich bieżących wartości. Jeśli chcesz wiedzieć, do jakiej wartości faktycznie wyznacza wyrażenie w kodzie, uruchom do kursor najpierw do niej, tak aby wszystkie identyfikatory miały prawidłowe wartości.

Lokalne zegarki

Ponieważ sprawdzanie wartości zmiennych lokalnych wewnątrz funkcji jest powszechne podczas debugowania, wiele debuggerów oferuje sposób szybkiego sprawdzenia wartości uniknąć zmiennych lokalnych w zakres.

W przypadku użytkowników programu Visual Studio

W Visual Studio wartość wszystkich zmiennych lokalnych można zobaczyć w oknie Locals , które można znaleźć w menu Debug > Windows > Locals. Pamiętaj, że aby aktywować to okno, musisz być w sesji debugowania.

W przypadku użytkowników Code::Blocks

W Code::Blocks jest to zintegrowane z oknem Watch , w węzeł Locals . Jeśli ich nie widzisz, oznacza to, że ich nie ma lub musisz rozwinąć węzeł.

Dla użytkowników VS Code

W VS Code wartość zmiennych lokalnych można znaleźć w sekcji ZMIENNE , która w trybie debugowania jest zadokowana po lewej stronie. Może być konieczne rozwinięcie węzła Locals .

Jeśli chcesz tylko obejrzeć wartość zmiennej lokalnej, najpierw sprawdź okno locals . Powinno już tam być.

guest
Twój adres e-mail nie zostanie wyświetlony
Znalazłeś błąd? Zostaw komentarz powyżej!
Komentarze związane z poprawkami zostaną usunięte po przetworzeniu, aby pomóc zmniejszyć bałagan. Dziękujemy za pomoc w ulepszaniu witryny dla wszystkich!
Awatary z https://gravatar.com/ są połączone z podanym adresem e-mail.
Powiadamiaj mnie o odpowiedziach:  
170 Komentarze
Najnowsze
Najstarsze Najczęściej głosowane
Wbudowane opinie
Wyświetl wszystkie komentarze