Basta digitare GDB nella finestra del terminale per accedere al GDB del sistema operativo su Ubuntu o qualsiasi altro sistema operativo basato su Linux o UNIX. Lo screenshot del comando GDB è mostrato nella seguente illustrazione. Mostra i dettagli del copyright del GDB. Il prompt aperto di GDB indica le informazioni relative a quando è pronto ad accettare i comandi. Su alcune configurazioni GDB in cui il sistema operativo abilita i thread, queste funzionalità non sono ancora accessibili. Queste istruzioni non hanno alcun impatto su GDB che non consentono il threading. Ad esempio, un sistema che manca di un supporto thread ignora il risultato della query "Informazioni threads" e ignora costantemente l'istruzione del thread.
Devi solo digitare il comando "smettila" nel terminale GDB per uscire e terminare la sessione corrente di GDB. Puoi vedere le istruzioni di smettere sul debugger GDB come mostrato da segue:
Il debugger GDB ha inventato molti comandi di debugger. Ecco alcuni comandi di esempio elencati che possiamo provare a utilizzare il debugger GDB:
Esempio:
Ecco un piccolo pezzo di codice che utilizza diversi thread, li crea con il metodo pThread_create e passa i metodi dei thread. Il programma di esempio ha una funzione principale () che crea due thread nella seguente illustrazione. Ora ci sono tre thread in esecuzione tra cui il thread genitore/originale (). La funzione principale () utilizza la funzione pThread_create () per creare i thread e chiamarli uno dopo l'altro.
Il ciclo while viene controllato nel seguente codice per vedere se il valore della variabile Count1 è inferiore a 500. Se lo è, l'istruzione di stampa viene eseguita per visualizzare una stringa "thread 1 in esecuzione" insieme alla variabile di conteggio. Il thread viene unito immediatamente dopo aver utilizzato il comando pThread_ join () in questo codice.
Utilizzare i seguenti comandi elencati per compilare il codice utilizzando il compilatore GCC e visualizzare l'attività del thread con il debugger GDP. La seguente immagine è uno screenshot che mostra che il codice precedente viene compilato correttamente:
GCC -G multithreads.c -o multithreads -lpthread
Mentre usi Ubuntu 20.04 Sistema, digitare il seguente comando sullo schermo del terminale per vedere ed esaminare il thread.
$ GDB ./Multithreads
Ora siamo in modalità di debug GDB, grazie alla finestra del terminale. Per stabilire i punti di interruzione sul principale, utilizzare il thread due e thread tre routine di ciascun thread appena formato. Per inserire un punto di interruzione, utilizziamo il seguente codice elencato. È un semplice comando; Basta digitare la pausa. Successivamente, scrivi il nome dei metodi thread per inserire i punti di interruzione. Questo metodo visualizza il numero di riga in cui sono stati aggiunti i punti di interruzione.
Per eseguire il programma, utilizzare la parola chiave "Esegui" o semplice "R" come comando sullo schermo del terminale. Una panoramica dei thread del programma e alcune informazioni sulla loro condizione attuale sono fornite dai thread di informazioni di comando, poiché si dovrebbe prendere in considerazione. Finora c'è stato solo un thread in questo caso.
L'esecuzione dovrebbe continuare a utilizzare il seguente comando:
Altri due thread iniziano in questo posto. Il thread che è attualmente a fuoco è indicato da una stella. Inoltre, viene raggiunto il set di breakpoint per i thread appena formati nei loro metodi di inizializzazione: il thread due () e il thread tre (), in particolare. Usa il comando per spostare la messa a fuoco su un altro thread prima di avviare un thread effettivo debug. Alla riga 17 della sua funzione thread due, thread 2 () si ferma.
Secondo l'output dei "thread di informazioni", il thread due stampa brevemente il contatore e quindi parte il thread 2 alla riga 17. Allo stesso modo, possiamo gestire il thread "thread_three" usando un modo abbastanza simile che abbiamo utilizzato per thread_two.
Conclusione
Per riassumere, siamo finalmente in grado di utilizzare il debugger GDB nel nostro Ubuntu 20.04 Sistema Linux. Per questo, abbiamo spiegato il suo utilizzo nel paragrafo introduttivo e elencato alcune delle caratteristiche principali che ci vengono fornite e lo rendono un debugger unico.