fbpx ...

Debuggery - narzędzia programisty

Debuggery są narzędziem potrzebnym każdemu programiście. Pozwalają one zaoszczędzić wielu godzin szukania błędów w naszym kodzie. Co więcej, dają również możliwość kontrolowania wykonywanego program, zatrzymywania go, wykonywania instrukcji krok po kroku i śledzenia wartości poszczególnych zmiennych.

W związku z tym chcę ci przedstawić ten skrót z lekcji kursu C++. Znajdziesz tu informacje, w jaki sposób korzystać z debuggerów GDB i LLDB.

Debuggery w skrócie

Rozpocznę od klasycznego debuggera GDB (narzędzie konsolowe z możliwością korzystania z różnych interfejsów graficznych), a później przejdę do narzędzia LLDB, wywodzącego się z rodziny narzędzi Clang. Chociaż LLDB jest znany ze swojej wygody, to jednak GDB jest standardem w branży. Poniżej przedstawiam kilka kluczowych komend:

Uruchamianie debuggera

Pierwszym krokiem jest uruchomienie programu pod kontrolą debuggera. Na przykład: „gdb nazwa_binarki”. Pozwala to na rozpoczęcie analizy kodu źródłowego. 

Uruchamianie programu

W oknie debuggera wpisz komendę „run”. 

Ustawianie Breakpointów

Breakpointy to kluczowe narzędzie debugowania. Pozwalają na zatrzymanie wykonania programu w określonym miejscu. W GDB użyj komend „break” lub „b”, aby utworzyć breakpointy. Przykładowo: „break 5” utworzy breakpoint w linii numer 5.

Lista breakpointów

Aby sprawdzić listę ustawionych breakpointów, możesz skorzystać z komendy „info breakpoints”. Daje to pełen przegląd punktów przerwania, co ułatwia zarządzanie nimi.

Usuwanie breakpointów

Po zakończeniu debugowania możesz usunąć breakpointy za pomocą komendy „clear” lub „delete breakpoint N”, gdzie N to numer breakpointu do usunięcia.

Zakończenie debugowania

Po zakończeniu procesu debugowania możesz wyjść z programu za pomocą komendy „quit”. To pozwala na czyste zakończenie debugowania i zwolnienie zasobów.

Wyświetlanie wartości zmiennych

Podczas debugowania często chcemy sprawdzić wartości zmiennych. W GDB możesz to zrobić, używając komendy „print” lub jej skrótu „p”. Przykład: „p var” wyświetli wartość zmiennej „var”.

Obserwowanie zmiennych (watchpoint)

Watchpoint to mechanizm, który umożliwia zatrzymanie wykonania programu po zmianie wartości danej zmiennej lub w określonym miejscu w pamięci. Aby użyć watchpointa, wprowadź komendę „watch var”, gdzie var to nazwa zmiennej do obserwowania.

Tryb tekstowy i graficzny

GDB oferuje możliwość korzystania z trybu tekstowego lub graficznego. Tryb graficzny można uruchomić, odpalając gdb z przełącznikiem –tui, czyli „gdb –tui nazwa_binarki”. Daje to wygodny interfejs do analizy kodu źródłowego i stosu wywołań.

Wchodzenie do funkcji

Aby wejść w środek funkcji i monitorować jej działanie, użyj komendy „step into”, jej skrótu „si” lub „s”. Pozwalają one na śledzenie przebiegu wykonywania funkcji krok po kroku.

Przeglądanie stosu wywołań

W trakcie debugowania przydatne jest monitorowanie stosu wywołań funkcji. Możesz to zrobić za pomocą komendy „backtrace” lub jej skrótu „bt”. To da Ci pełny obraz wywołań funkcji w trakcie programu.

Przesuwanie się po stosie

Jeśli chcesz przemieszczać się po stosie wywołań, możesz użyć komend „up” aby przejść do wyższego poziomu wywołań funkcji oraz „down” do niższego.

Debuggery - czy warto?

Podsumowując, debugger to nieocenione narzędzie dla programistów, które pozwala na dokładne zrozumienie i naprawianie problemów w kodzie źródłowym. Znajomość podstawowych komend debuggera, takich jak „run”, „break”, „print”, i „backtrace”, jest kluczowa dla skutecznego debugowania. Pozwala to na efektywne i precyzyjne rozwiązywanie problemów w Twoim kodzie. Warto zainwestować czas w naukę korzystania z debuggera, ponieważ może to znacząco usprawnić proces programowania.

Chcesz dowiedzieć się więcej, albo po prostu wolisz widzieć co dzieje się w konsoli? Zachęcam do obejrzenia materiału wideo. A jeśli zainteresował Cię temat debuggerów to zerknij na nasz kurs narzędzia programisty. 🛠️

ninjaletter

A może Ninjaletter?

Chcesz wiedzieć, co słychać w C++ i nie tylko? Zapisz się na Ninjaletter i otrzymuj od nas co miesiąc dawkę wartościowych treści o C++ i zadania rekrutacyjne. Do tego dorzucamy darmowe materiały, spoilery o nowych kursach, specjalne promocje dla ninjaletterowiczów i wiele, wiele innych. To co, skusisz się?

Łukasz Ziobroń

Łukasz Ziobroń

Zmieniam ludzi w prawdziwych programistów. W nauczaniu stosuję grywalizację, andragogikę i neurodydaktykę.

Najnowsze artykuły

docker

Narzędzia programisty: Docker w skrócie

Co wspólnego ze sobą mają ogry, cebula i Docker? Poznaj podstawy Dockera i dowiedz się, jak może przyspieszyć Twoją codzienną pracę. Odkryj, dlaczego warto go mieć w swoim arsenale programisty.

Czytaj »
good programming practices

Good programming practices – Coding Dojo

Training in a form of Coding Dojo. Participants start with a code review of a small application. They note down their comments. After that, the trainer presents bad and good programming practices. Participants discuss what can be applied in a reviewed code and start fixing it in a form of Coding Dojo.

Czytaj »

Popular C++ Idioms – Coding Dojo

The training starts with a code review of a small application (pre-work). Participants note their thought and discuss their findings in groups. Then popular C++ idioms are presented (the concept and some code) – about 15-20 minutes each. After that participants need to use some of the idioms in a reviewed application code.

Czytaj »
performance optimisations

Performance optimisations

This training is about writing more robust C++ code and algorithms with the help of CPU caches and a compiler. Benchmarking tools are used to show performance gains.

Czytaj »
ninjaletter

Już uciekasz?

Zanim to zrobisz, zapisz się na Ninjaletter, aby wiedzieć, co piszczy w C++. 

Informujemy, iż w celu realizacji usług dostępnych w naszym serwisie, optymalizacji jej treści, dostosowania strony do Państwa indywidualnych potrzeb oraz wyświetlania, personalizacji i mierzenia skuteczności reklam w ramach zewnętrznych sieci reklamowych korzystamy z informacji zapisanych za pomocą plików cookies na urządzeniach końcowych użytkowników. Pliki cookies można kontrolować za pomocą ustawień swojej przeglądarki internetowej. Dalsze korzystanie z naszego serwisu, bez zmiany ustawień przeglądarki internetowej oznacza, iż użytkownik akceptuje stosowanie plików cookies. Więcej informacji zawartych jest w polityce prywatności serwisu.