GDB - Simboli di debug
UN Debugging Symbol Tablemappa le istruzioni nel programma binario compilato alla loro variabile, funzione o riga corrispondente nel codice sorgente. Questa mappatura potrebbe essere qualcosa del tipo:
Istruzioni di programma ⇒ nome elemento, tipo di elemento, file originale, numero di riga definito.
Le tabelle dei simboli possono essere incorporate nel programma o archiviate come file separato. Quindi, se si prevede di eseguire il debug del programma, è necessario creare una tabella dei simboli che avrà le informazioni richieste per eseguire il debug del programma.
Possiamo dedurre i seguenti fatti sulle tabelle dei simboli:
Una tabella dei simboli funziona per una particolare versione del programma: se il programma cambia, è necessario creare una nuova tabella.
Le build di debug sono spesso più grandi e più lente delle build al dettaglio (non di debug); le build di debug contengono la tabella dei simboli e altre informazioni ausiliarie.
Se desideri eseguire il debug di un programma binario che non hai compilato da solo, devi ottenere le tabelle dei simboli dall'autore.
Per consentire a GDB di leggere tutte quelle informazioni riga per riga dalla tabella dei simboli, è necessario compilarle in modo leggermente diverso. Normalmente compiliamo i nostri programmi come:
gcc hello.cc -o hello
Invece di farlo, dobbiamo compilare con il flag -g come mostrato di seguito:
gcc -g hello.cc -o hello