0Pricing
C++ Academy · Lekcja

Używanie gdb i lldb

Wykonuj programy krok po kroku

Używanie gdb i lldb to bezpłatna lekcja C++ Academy na CoddyKit. To lekcja 1 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej C++ Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs C++ Academy zawiera 4 lekcji w sumie.

Debugery interaktywne

gdb (GNU) i lldb (LLVM) pozwalają wstrzymać działanie programu, sprawdzić wartości zmiennych i prześledzić kod wiersz po wierszu. Ich polecenia są podobne.

Kompilowanie z informacjami debugowania

Program należy zawsze budować z opcją -g (a najlepiej także -O0), aby debugger mógł powiązać kod maszynowy z kodem źródłowym.

g++ -g -O0 main.cpp -o app
# then
gdb ./app

Ustawianie breakpointów

Breakpoint wstrzymuje wykonanie programu w wybranym miejscu.

  • gdb: break main.cpp:10 lub break myFunc
  • lldb: breakpoint set --file main.cpp --line 10 lub b myFunc

Uruchamianie programu

Rozpocznij wykonywanie za pomocą run (lub r). Program zatrzyma się na pierwszym napotkanym breakpoincie i będzie gotowy do analizy.

Śledzenie wykonywania kodu

Podstawowe polecenia śledzenia (o takich samych nazwach w gdb i lldb):

  • next / n: wykonuje jeden wiersz, pomijając wywołania funkcji
  • step / s: wchodzi do wywoływanej funkcji
  • finish: wykonuje kod do momentu powrotu bieżącej funkcji
  • continue / c: wznawia wykonywanie do następnego breakpointu

Sprawdzanie zmiennych

Wyświetlaj wartości, aby zrozumieć stan programu.

  • gdb: print x, print arr[2]
  • lldb: frame variable lub p x

Cel przykładowej sesji

Rozważmy ten program; można ustawić breakpoint w pętli i wyświetlać sum w każdej iteracji.

#include <iostream>

int main() {
    int sum = 0;
    for (int i = 1; i <= 3; ++i) {
        sum += i;
    }
    std::cout << sum << "\n";
    return 0;
}

Stos wywołań

Po zatrzymaniu programu polecenie backtrace (gdb) lub bt (lldb) pokazuje łańcuch wywołań funkcji. Za pomocą frame N można przełączyć się do funkcji wywołującej i sprawdzić jej zmienne lokalne.

Punkty obserwacyjne

Punkt obserwacyjny zatrzymuje program, gdy zmieni się wartość zmiennej, co pomaga znaleźć miejsce wystąpienia nieoczekiwanych modyfikacji.

  • gdb: watch counter
  • lldb: watchpoint set variable counter

Warunkowe breakpointy

Program zatrzymuje się tylko wtedy, gdy warunek jest spełniony, dzięki czemu nie trzeba wykonywać kodu krok po kroku ręcznie.

  • gdb: break loop.cpp:5 if i == 99
  • lldb: breakpoint set --line 5 --condition "i == 99"

Debugowanie awarii

Uruchom program powodujący awarię pod kontrolą debuggera; w przypadku błędu segmentacji zatrzyma się on w wierszu, który go spowodował. Następnie użyj bt, aby sprawdzić, jak program dotarł do tego miejsca. Można także przeanalizować zrzut pamięci po wystąpieniu awarii.

Szybkie sprawdzenie

Przypomnij sobie polecenia śledzenia.

Podsumowanie

Poznali Państwo debugowanie interaktywne.

  • Buduj z opcjami -g -O0
  • Ustawiaj breakpointy, używaj run, a następnie next/step/finish
  • Sprawdzaj wartości za pomocą print/frame variable oraz backtrace
  • Punkty obserwacyjne i warunkowe breakpointy pomagają wykrywać trudne błędy

Często zadawane pytania

Czy lekcja „Używanie gdb i lldb” jest bezpłatna?

Tak — pełny tekst „Używanie gdb i lldb” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu C++ Academy, przejdź na CoddyKit PRO. Kurs C++ Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Używanie gdb i lldb”?

Wykonuj programy krok po kroku Ćwiczysz C++ Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć C++ Academy?

Nie wymagamy żadnego doświadczenia. C++ Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 4.

Ile czasu zajmuje lekcja „Używanie gdb i lldb”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji C++ Academy?

Tak. Każda lekcja C++ Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Używanie gdb i lldb
  2. AddressSanitizer
  3. UBSan i TSan
  4. Podstawy Valgrind
← Powrót do C++ Academy