Hoe gdb te installeren in RHEL 8

  • Dylan Parker
  • 0
  • 751
  • 46
> Gdb of GNU Project Debugger is een geweldig hulpmiddel wanneer u een programma moet debuggen. U kunt breekpunten instellen, kijken naar waardeveranderingen van een variabele, of zelfs een waarde voor het programma wijzigen terwijl het op een punt in zijn staat is gestopt, en dan doorgaan, gewoon om enkele van de functies van gdb te kiezen.

In deze tutorial zullen we gdb op RHEL 8 installeren en testen hoe het werkt met een eenvoudige C-applicatie.

In deze tutorial leer je:
  • Hoe gdb
  • Hoe een eenvoudige C-applicatie met debug-symbolen te compileren
  • Hoe u breekpunten instelt in de actieve applicatie met gdb
  • Hoe werkelijke waarden van gegeven variabelen in de applicatie kunnen worden afgedrukt
Door een for-lus stappen met gdb.

Gebruikte softwarevereisten en -conventies

Softwarevereisten en Linux Command Line-conventies
Categorie Vereisten, conventies of gebruikte softwareversie
Systeem Red Hat Enterprise Linux 8
Software gdb 8.2
Andere Bevoorrechte toegang tot uw Linux-systeem als root of via het sudo opdracht.
Conventies # - vereist dat gegeven linux-commando's worden uitgevoerd met root-privileges, hetzij direct als rootgebruiker, hetzij door gebruik van sudo opdracht
$ - vereist dat gegeven linux-commando's worden uitgevoerd als een gewone niet-geprivilegieerde gebruiker

Hoe gdb in Redhat Linux 8 stap voor stap instructies te installeren

Voor deze zelfstudie gebruiken we een eenvoudige C-toepassing die enkele variabelen instelt, wat tekst afdrukt en de waarden van de variabelen later wijzigt. Het is alleen gebouwd om enkele kenmerken van te laten zien gdb, en heeft geen gebruik in de echte wereld.
Als je niet bekend bent met de programmeertaal C, kun je C-ontwikkeling op Linux-inleiding bekijken om je op weg te helpen. Overweeg nu de volgende broncode, die we in het vars.c tekstbestand:

#inclusief  int main () int i = 1; int j = 10; printf ("Variabelen set \ n)"; i ++; j = 20; printf ("Variabele waarden gewijzigd \ n"); retourneer 0; 
We zullen dit eenvoudige programma gebruiken om te testen gdb. U kunt aan de code opmerken dat de waarden variabelen ik en j take zal nooit worden blootgesteld tijdens een normale uitvoering van het programma, dus we zullen niet weten wat hun waarden waar en wanneer zijn. In dit geval is het een simpele verspilling van geheugen, maar denk eens aan een use case waar ik zou iets belangrijks bevatten, misschien een hard gecodeerd wachtwoord, cheat-code of een andere schat (of kan gewoon niet vinden waar de berekeningen van je programma fout gaan).

  1. gdb maakt deel uit van de Ontwikkelingshulpmiddelen pakketgroep, dus als je Ontwikkeltools hebt geïnstalleerd, heb je al gdb. Als dit niet het geval is, kunt u het zelf installeren:
    # dnf installeer gdb
    We hebben ook debuginfo nodig voor glibc voor onze tests:
    # dnf debuginfo-install glibc-2.28-18.el8.x86_64


  2. We hebben de debugger-tool en we hebben de broncode. Om de foutopsporing nuttig te laten zijn, moeten we ons programma compileren met foutopsporingssymbolen (we voegen de -g optie):
    $ gcc -g -o vars vars.c
    Als we onze vars programma, zal het de strings in het printf lijnen, maar zal niet vermelden ik en j, zoals verwacht.
    $ ./vars Variables set Variabele waarden gewijzigd
  3. We moeten de waarden kennen van ik en j wanneer ze voor het eerst werden ingesteld en voordat het programma werd afgesloten. Beschouw regels 7 en 10 (de printf lijnen) in de broncode.
    Het zou ideaal zijn als we de uitvoering op die regels zouden kunnen stoppen, de waarden zouden kunnen ophalen, het programma weer los kunnen laten, enz. We zullen dit precies doen om te testen gdb. We beginnen het met het gecompileerde vars uitvoerbaar als argument:
    $ gdb vars GNU gdb (GDB) Red Hat Enterprise Linux 8.2-3.el8 Copyright (C) 2018 Free Software Foundation, Inc. Licentie GPLv3 +: GNU GPL versie 3 of hoger  Dit is gratis software: u bent vrij om deze te wijzigen en opnieuw te verspreiden. Er is GEEN GARANTIE, voor zover toegestaan ​​door de wet. Typ "toon kopiëren" en "toon garantie" voor details. Deze GDB is geconfigureerd als "x86_64-redhat-linux-gnu". Typ "show configuration" voor configuratiedetails. Zie voor instructies voor het melden van fouten: . Vind de GDB-handleiding en andere documentatiebronnen online op: . Typ "help" voor hulp. Typ "apropos word" om te zoeken naar commando's gerelateerd aan "word" ... Symbolen lezen uit vars ... klaar. (gdb) 
    gdb leest de symbolen in het programma en geeft ons de prompt om te handelen. De vars programma is op dit moment niet gestart. We controleren onze aantekeningen en zetten een breekpunt op regel # 7:
    (gdb) pauze 7 Breekpunt 1 op 0x40059c: bestand vars.c, regel 7.
    En regel # 10:
    (gdb) pauze 10 Breekpunt 2 op 0x4005b1: bestand vars.c, regel 10.
    Met de breekpunten ingesteld, starten we de uitvoering:
    (gdb) rennen Startprogramma: / tmp / devel / vars Breakpoint 1, main () bij vars.c: 7 7 printf ("Variables set \ n");
    De uitvoering stopt bij het eerste breekpunt en we kunnen de waarden van de verborgen variabelen afdrukken:
    (gdb) print i = 1 (gdb) print j = 10
    We hebben het eerste deel van de benodigde informatie, laten we doorgaan met de uitvoering:
    (gdb) doorgaan met Doorgaan. Variabelen stellen Breakpoint 2, main () bij vars.c: 10 10 printf ("Variabele waarden gewijzigd \ n");
    We kunnen de waarden op dezelfde manier afdrukken bij het volgende breekpunt:
    (gdb) print i = 2 (gdb) print j = 20
    We hebben alles wat we nodig hadden. Er zijn geen onderbrekingspunten meer over, dus de toepassing zal normaal afsluiten na het afdrukken van de laatste regel tekst.
    (gdb) verder Vervolg. Variabele waarden gewijzigd [Inferieur 1 (proces 2330) normaal verlaten] (gdb) q
    We hebben de waarden van de geheime variabelen en hebben getest of onze gdb is zo nuttig als het bedoeld is.



Niemand heeft nog op dit artikel gereageerd.

Een verzameling nuttige informatie over het Linux-besturingssysteem en nieuwe technologieën
Nieuwe artikelen, praktische tips, gedetailleerde recensies en handleidingen. Voel je thuis in de wereld van het Linux-besturingssysteem