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