Jak zainstalować GDB w RHEL 8

Jak zainstalować GDB w RHEL 8

GDB lub debugger projektu GNU to świetne narzędzie, gdy potrzebujesz debugowania programu. Możesz ustawić punkty przerwania, obserwować zmianę wartości zmiennej, a nawet zmienić wartość dla programu, gdy jest on zatrzymany w punkcie jego stanu, a następnie kontynuować, aby wybrać niektóre funkcje GDB.

W tym samouczku zainstalujemy GDB na RHEL 8 i przetestujemy, jak działa z prostą aplikacją C.

W tym samouczku nauczysz się:

  • Jak zainstalować GDB
  • Jak skompilować prostą aplikację C z symbolami debugowania
  • Jak ustawić punkty przerwania w uruchomionej aplikacji z GDB
  • Jak wydrukować rzeczywiste wartości podanych zmiennych w aplikacji
Korupa A dla pętli z GDB.

Zastosowane wymagania i konwencje oprogramowania

Wymagania oprogramowania i konwencje linii poleceń Linux
Kategoria Wymagania, konwencje lub wersja oprogramowania
System Red Hat Enterprise Linux 8
Oprogramowanie GDB 8.2
Inny Uprzywilejowany dostęp do systemu Linux jako root lub za pośrednictwem sudo Komenda.
Konwencje # - Wymaga, aby podane polecenia Linux są wykonywane z uprawnieniami root bezpośrednio jako użytkownik root lub za pomocą sudo Komenda
$ - Wymaga, aby podane polecenia Linux zostały wykonane jako zwykły użytkownik niepewny

Jak zainstalować GDB w Redhat Linux 8 krok po kroku instrukcje



W tym samouczku użyjemy prostej aplikacji C, która ustawia niektóre zmienne, wydrukuje trochę tekstu i zmienili wartości zmiennych później. Jest zbudowany tylko po to, aby pokazać niektóre funkcje GDB, i nie ma rzeczywistego użytkowania świata.

Jeśli nie znasz języka programowania C, możesz sprawdzić program C w Linux Wprowadzenie, aby zacząć. Na razie rozważ następujący kod źródłowy, który włożymy w vars.C plik tekstowy:

#Include int main () int i = 1; int j = 10; printf („zmienne set \ n)”; i ++; J = 20; printf („Wartości zmienne zmodyfikowane \ n”); powrót 0; 
Kopiuj

Użyjemy tego prostego programu do przetestowania GDB. Z kodu możesz zauważyć, że zmienne wartości I I J Take nigdy nie zostanie ujawnione w normalnym przebiegu programu, więc nie będziemy wiedzieć, jakie ich wartości i kiedy i kiedy. W takim przypadku jest to prosta strata pamięci, ale pomyśl o przypadku użycia, w którym I pomieściłoby coś ważnego, może hardkodowanego hasła, kodu oszukiwania lub innego skarbu (lub po prostu nie mogę znaleźć, gdzie obliczenia twojego programu nie pomylą się).

  1. GDB jest częścią Narzędzia programistyczne Grupa pakietów, więc jeśli zainstalowałeś narzędzia programistyczne, masz już GDB. Jeśli nie, możesz go sam zainstalować:
    # DNF Zainstaluj GDB

    Do naszych testów potrzebujemy również debuginfo do GLIBC:

    # DNF DEBUGINFO-INSTALL GLIBC-2.28-18.El8.x86_64


  2. Dostaliśmy narzędzie debuggera i otrzymaliśmy kod źródłowy. Aby debugowanie było przydatne, musimy skompilować nasz program z symbolami debugowania (dodajemy -G opcja):
    $ gcc -g -o vars vars.C

    Jeśli uruchomimy nasz vars program, wyprowadzi ciągi w printf linie, ale nie wspomną I I J, zgodnie z oczekiwaniami.

    $ ./vars zmienne Ustaw zmodyfikowane wartości zmiennych
  3. Musimy znać wartości I I J Kiedy oni po raz pierwszy ustawiają się i zanim program wyszedł. Rozważ linie #7 i #10 (The printf linie) w źródle. Byłoby idealnie, gdybyśmy mogli zatrzymać wykonanie w tych wierszach, uzyskać wartości, a następnie pozwolić programowi ponownie się stracić itp. Dokładnie to zrobimy, aby przetestować GDB. Zaczynamy od skompilowanego vars wykonywalny jako argument:
    $ GDB VARS GNU GDB (GDB) Red Hat Enterprise Linux 8.2-3.El8 Copyright (C) 2018 Free Software Foundation, Inc. Licencja GPLV3+: GNU GPL Wersja 3 lub nowsza To jest bezpłatne oprogramowanie: możesz je zmienić i redystrybuować. Nie ma gwarancji, w jakim stopniu dozwolonym przez prawo. Wpisz „Pokaż kopiowanie” i „Pokaż gwarancję”, aby uzyskać szczegółowe informacje. Ten GDB został skonfigurowany jako „x86_64-Redhat-Linux-gnu”. Wpisz „Pokaż konfigurację” dla szczegółów konfiguracji. Instrukcje zgłaszania błędów można znaleźć: . Znajdź instrukcję obsługi GDB i inne zasoby dokumentacji online pod adresem: . Aby uzyskać pomoc, wpisz „Pomoc”. Wpisz „słowo apropos”, aby wyszukać polecenia związane z „słowem”… czytanie symboli od vars… gotowe. (GDB)

    GDB czyta symbole w programie i daje nam monit do działania. vars W tym momencie program nie jest uruchomiony. Sprawdzamy nasze notatki i ustawiamy punkt przerwania W wierszu #7:

    (GDB) Break 7 Punkt przerwania 1 na 0x40059c: File Vars.C, linia 7.

    I wiersz #10:

    (GDB) Break 10 Breakpoint 2 na 0x4005b1: Plik Vars.C, linia 10.

    Z zestawem punktów przerwania rozpoczynamy wykonanie:

    (GDB) uruchomić Program początkowy:/tmp/devel/vars przerwa 1, main () at vars.C: 7 7 printf („Zmienne zmienne \ n”);

    Wykonanie zatrzymuje się w pierwszym punkcie przerwania i możemy wydrukować wartości ukrytych zmiennych:

    (GDB) Drukuj i 1 USD = 1 (GDB) Drukuj J 2 USD = 10

    Dostaliśmy pierwszą część potrzebnych informacji, kontynuujmy wykonanie:

    (GDB) Kontynuować Kontynuowanie. Zmienne ustawiają punkt przerwania 2, main () at vars.C: 10 10 printf („Wartości zmienne zmodyfikowane \ n”);

    Możemy wydrukować wartości w ten sam sposób w następnym punkcie przerwania:

    (GDB) Drukuj I 3 USD = 2 (GDB) Drukuj J 4 USD = 20

    Mamy wszystko, czego potrzebowaliśmy. Pozostały nie więcej punktów przerwania, więc aplikacja wychodzi normalnie po wydrukowaniu ostatniego wiersza tekstu.

    (GDB) Kontynuuj kontynuowanie. Wartości zmienne zmodyfikowane [dolne 1 (proces 2330) opuścił normalnie] (GDB) q

    Dostaliśmy wartości tajnych zmiennych i przetestowaliśmy, że nasze GDB jest tak przydatny, jak ma być.

Powiązane samouczki Linux:

  • Samouczek debugowania GDB dla początkujących
  • Rzeczy do zainstalowania na Ubuntu 20.04
  • Rzeczy do zainstalowania na Ubuntu 22.04
  • Rzeczy do zrobienia po zainstalowaniu Ubuntu 20.04 Focal Fossa Linux
  • Rzeczy do zrobienia po zainstalowaniu Ubuntu 22.04 JAMMY Jellyfish…
  • Zainstaluj Arch Linux na stacji roboczej VMware
  • Ubuntu 20.04 Przewodnik
  • Jak podwójnie rozruch Kali Linux i Windows 10
  • Hung Linux System? Jak uciec do wiersza poleceń i…
  • Jak korzystać z ADB Android Debug Bridge do zarządzania Androidem…