Usare gdb e lldb
Eseguire i programmi passo per passo
Usare gdb e lldb è una lezione C++ Academy gratuita su CoddyKit. Questa è la lezione 1 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento C++ Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso C++ Academy include 4 lezioni in totale.
Debugger interattivi
gdb (GNU) e lldb (LLVM) consentono di mettere in pausa un programma in esecuzione, ispezionare le variabili ed eseguire il codice riga per riga. I relativi comandi sono simili.
Compilare con le informazioni di debug
Compili sempre con -g (e idealmente con -O0), in modo che il debugger possa ricondurre il codice macchina al codice sorgente.
g++ -g -O0 main.cpp -o app
# then
gdb ./appImpostare i punti di interruzione
Un punto di interruzione mette in pausa l'esecuzione in una posizione scelta.
- gdb:
break main.cpp:10oppurebreak myFunc - lldb:
breakpoint set --file main.cpp --line 10oppureb myFunc
Eseguire il programma
Avvii l'esecuzione con run (o r). Il programma si arresta al primo punto di interruzione raggiunto, pronto per essere ispezionato.
Eseguire il codice passo passo
Comandi fondamentali per l'esecuzione passo passo (con gli stessi nomi in gdb e lldb):
next/n: esegue una riga ignorando i dettagli delle chiamatestep/s: entra in una chiamatafinish: esegue il codice fino al ritorno dalla funzione correntecontinue/c: riprende l'esecuzione fino al punto di interruzione successivo
Ispezionare le variabili
Stampi i valori per comprendere lo stato del programma.
- gdb:
print x,print arr[2] - lldb:
frame variableoppurep x
Un programma di esempio per la sessione
Consideri questo programma: potrebbe impostare un punto di interruzione nel ciclo e stampare sum a ogni iterazione.
#include <iostream>
int main() {
int sum = 0;
for (int i = 1; i <= 3; ++i) {
sum += i;
}
std::cout << sum << "\n";
return 0;
}Lo stack delle chiamate
Quando l'esecuzione è in pausa, backtrace (gdb) o bt (lldb) mostra la catena delle chiamate di funzione. Usi frame N per passare a una funzione chiamante e ispezionarne le variabili locali.
Punti di osservazione
Un punto di osservazione arresta il programma quando una variabile cambia, aiutando a trovare il punto in cui avvengono modifiche impreviste.
- gdb:
watch counter - lldb:
watchpoint set variable counter
Punti di interruzione condizionali
Interrompa l'esecuzione solo quando una condizione è vera, evitando di procedere manualmente passo passo.
- gdb:
break loop.cpp:5 if i == 99 - lldb:
breakpoint set --line 5 --condition "i == 99"
Eseguire il debug degli arresti anomali
Esegua il programma che causa l'arresto anomalo sotto il debugger; in caso di segfault, l'esecuzione si arresta sulla riga che ha causato l'errore. Usi quindi bt per vedere come ci è arrivato. Può anche analizzare un core dump in un secondo momento.
Verifica rapida
Ricordi i comandi per l'esecuzione passo passo.
Riepilogo
Ha imparato a eseguire il debug interattivo.
- Compilare con
-g -O0 - Impostare i punti di interruzione, usare
run, quindinext/step/finish - Ispezionare con
print/frame variableebacktrace - I punti di osservazione e i punti di interruzione condizionali aiutano a individuare i bug più difficili
Domande Frequenti
La lezione «Usare gdb e lldb» è gratuita?
Sì — il testo completo di «Usare gdb e lldb» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso C++ Academy, passa a CoddyKit PRO. Il corso C++ Academy include 4 lezioni in totale.
Cosa imparerò in «Usare gdb e lldb»?
Eseguire i programmi passo per passo Eserciti C++ Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare C++ Academy?
Non è richiesta alcuna esperienza precedente. C++ Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 1 di 4.
Quanto tempo richiede la lezione «Usare gdb e lldb»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione C++ Academy?
Sì. Ogni lezione C++ Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Usare gdb e lldb
- AddressSanitizer
- UBSan e TSan
- Nozioni di base su Valgrind