GDB - Símbolos de depuração

UMA Debugging Symbol Tablemapeia instruções no programa binário compilado para sua variável, função ou linha correspondente no código-fonte. Esse mapeamento pode ser algo como:

  • Instrução de programa ⇒ nome do item, tipo de item, arquivo original, número de linha definido.

As tabelas de símbolos podem ser incorporadas ao programa ou armazenadas como um arquivo separado. Portanto, se você planeja depurar seu programa, é necessário criar uma tabela de símbolos que terá as informações necessárias para depurar o programa.

Podemos inferir os seguintes fatos sobre tabelas de símbolos:

  • Uma tabela de símbolos funciona para uma versão específica do programa - se o programa mudar, uma nova tabela deve ser criada.

  • As compilações de depuração são geralmente maiores e mais lentas do que as compilações de varejo (não depuradas); as compilações de depuração contêm a tabela de símbolos e outras informações auxiliares.

  • Se você deseja depurar um programa binário que não compilou, você deve obter as tabelas de símbolos do autor.

Para permitir que o GDB seja capaz de ler todas as informações linha por linha da tabela de símbolos, precisamos compilá-la de maneira um pouco diferente. Normalmente compilamos nossos programas como:

gcc hello.cc -o hello

Em vez de fazer isso, precisamos compilar com o sinalizador -g conforme mostrado abaixo:

gcc -g hello.cc -o hello