GNU/Linux >> Linux Esercitazione >  >> Linux

Come installare gdb in RHEL 8

GdB o GNU Project Debugger è un ottimo strumento quando è necessario eseguire il debug di un programma. Puoi impostare punti di interruzione, osservare la modifica del valore di una variabile o persino modificare un valore per il programma mentre è interrotto in un punto del suo stato, quindi continuare, solo per selezionare alcune delle funzionalità di gdb.

In questo tutorial installeremo gdb su RHEL 8 e testeremo come funziona con una semplice applicazione C.

In questo tutorial imparerai:

  • Come installare gdb
  • Come compilare una semplice applicazione C con simboli di debug
  • Come impostare punti di interruzione nell'applicazione in esecuzione con gdb
  • Come stampare i valori effettivi di determinate variabili all'interno dell'applicazione

Passare attraverso un ciclo for con gdb.

Requisiti e convenzioni software utilizzati

Requisiti software e convenzioni della riga di comando Linux
Categoria Requisiti, convenzioni o versione del software utilizzata
Sistema Red Hat Enterprise Linux 8
Software gb 8.2
Altro Accesso privilegiato al tuo sistema Linux come root o tramite sudo comando.
Convenzioni # – richiede che i comandi linux dati vengano eseguiti con i privilegi di root direttamente come utente root o usando sudo comando
$ – richiede che i comandi linux dati vengano eseguiti come un normale utente non privilegiato

Come installare gdb in Redhat Linux 8 istruzioni passo passo

Per questo tutorial, utilizzeremo una semplice applicazione C che imposta alcune variabili, stampa del testo e modifica i valori delle sue variabili in un secondo momento. È costruito solo per mostrare alcune funzionalità di gdb e non ha alcun utilizzo nel mondo reale.

Se non hai familiarità con il linguaggio di programmazione C, puoi dare un'occhiata allo sviluppo C su Linux Introduzione per iniziare. Per ora consideriamo il seguente codice sorgente, che inseriremo nel vars.c file di testo:

#include <stdio.h>

int main()
{
    int i = 1;
    int j = 10;
    printf("Variables set\n)";
    i++;
    j = 20;
    printf("Variable values modified\n");
    return 0;
}

Useremo questo semplice programma per testare gdb . Puoi notare dal codice che le variabili di valori i e j take non verrà mai esposto durante il normale funzionamento del programma, quindi non sapremo quali sono i loro valori dove e quando. In questo caso è un semplice spreco di memoria, ma pensa a un caso d'uso in cui i conterrebbe qualcosa di importante, forse una password codificata, un cheat-code o un altro tesoro (o semplicemente non riesci a trovare dove i calcoli del tuo programma vanno male).

  1. gdb fa parte degli Development Tools gruppo di pacchetti, quindi se hai installato gli strumenti di sviluppo, hai già gdb. In caso contrario, puoi installarlo da solo:
    # dnf install gdb

    Avremo anche bisogno di debuginfo per glibc per i nostri test:

    # dnf debuginfo-install glibc-2.28-18.el8.x86_64
  2. Abbiamo lo strumento debugger e il codice sorgente. Affinché il debug sia utile, dobbiamo compilare il nostro programma con simboli di debug (aggiungiamo il -g opzione):
    $ gcc -g -o vars vars.c

    Se eseguiamo il nostro vars programma, produrrà le stringhe nel printf righe, ma non menzionerà i e j , come previsto.

    $ ./vars 
    Variables set
    Variable values modified
  3. Dobbiamo conoscere i valori di i e j quando sono stati impostati per la prima volta e prima dell'uscita del programma. Considera le righe #7 e #10 (il printf righe) nella sorgente. Sarebbe l'ideale se potessimo interrompere l'esecuzione su quelle righe, ottenere i valori, quindi lasciare che il programma si allenta di nuovo, ecc. Lo faremo esattamente per testare gdb . Iniziamo con il compilato vars eseguibile come argomento:
    $ gdb vars
    GNU gdb (GDB) Red Hat Enterprise Linux 8.2-3.el8
    Copyright (C) 2018 Free Software Foundation, Inc.
    License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
    This is free software: you are free to change and redistribute it.
    There is NO WARRANTY, to the extent permitted by law.
    Type "show copying" and "show warranty" for details.
    This GDB was configured as "x86_64-redhat-linux-gnu".
    Type "show configuration" for configuration details.
    For bug reporting instructions, please see:
    <http://www.gnu.org/software/gdb/bugs/>.
    Find the GDB manual and other documentation resources online at:
        <http://www.gnu.org/software/gdb/documentation/>.
    
    For help, type "help".
    Type "apropos word" to search for commands related to "word"...
    Reading symbols from vars...done.
    (gdb)

    gdb legge i simboli nel programma e ci dà la richiesta di agire. Le vars il programma non è avviato a questo punto. Controlliamo le nostre note e impostiamo un breakpoint alla riga n. 7:

    (gdb) break 7
    Breakpoint 1 at 0x40059c: file vars.c, line 7.

    E riga #10:

    (gdb) break 10
    Breakpoint 2 at 0x4005b1: file vars.c, line 10.

    Con i breakpoint impostati, iniziamo l'esecuzione:

    (gdb) run
    Starting program: /tmp/devel/vars 
    
    Breakpoint 1, main () at vars.c:7
    7           printf("Variables set\n");

    L'esecuzione si ferma al primo punto di interruzione e possiamo stampare i valori delle variabili nascoste:

    (gdb) print i
    $1 = 1
    (gdb) print j
    $2 = 10

    Abbiamo ottenuto la prima parte delle informazioni necessarie, continuiamo l'esecuzione:

    (gdb) continue
    Continuing.
    Variables set
    
    Breakpoint 2, main () at vars.c:10
    10          printf("Variable values modified\n");

    Possiamo stampare i valori allo stesso modo al punto di interruzione successivo:

    (gdb) print i
    $3 = 2
    (gdb) print j
    $4 = 20

    Abbiamo tutto ciò di cui avevamo bisogno. Non sono rimasti più punti di interruzione, quindi l'applicazione si chiuderà normalmente dopo aver stampato l'ultima riga di testo.

    (gdb) continue
    Continuing.
    Variable values modified
    [Inferior 1 (process 2330) exited normally]
    (gdb) q

    Abbiamo ottenuto i valori delle variabili segrete e abbiamo testato il nostro gdb è utile quanto dovrebbe essere.


Linux
  1. Come installare phpMyAdmin su RHEL 8 / CentOS 8

  2. Come installare P7Zip su RHEL 8 / CentOS 8

  3. Come installare ntfs-3g su RHEL 8 / CentOS 8

  4. Come installare PHP-mbstring su RHEL 8 / CentOS 8

  5. come installare gcc 4.9.2 su RHEL 7.4

Come installare Spark su RHEL 8

Come installare ActiveMQ su RHEL 8

Come installare apache bench su RHEL 8

Come installare cassandra su RHEL 8

Come installare il compositore su RHEL 8

Come installare kafka su RHEL 8