2.3. Habilitando a depuração de aplicações C e C++ com GCC
Como a informação de depuração é grande, ela não é incluída em arquivos executáveis por padrão. Para permitir a depuração de suas aplicações C e C++ com ela, você deve instruir explicitamente o compilador a criá-la.
Para permitir a criação de informações de depuração com GCC ao compilar e vincular código, use a opção -g
:
$ gcc ... -g ...
-
Otimizações realizadas pelo compilador e pelo linker podem resultar em código executável que é difícil de relacionar com o código fonte original: variáveis podem ser otimizadas, loops desenrolados, operações fundidas com as operações ao redor, etc. Isto afeta negativamente a depuração. Para melhorar a experiência de depuração, considere definir a otimização com a opção
-Og
. Entretanto, mudar o nível de otimização altera o código executável e pode mudar o comportamento real, incluindo a remoção de alguns bugs. -
Para incluir também definições macro nas informações de depuração, use a opção
-g3
ao invés de-g
. -
A opção
-fcompare-debug
GCC testa o código compilado pelo GCC com informações de debug e sem informações de debug. O teste passa se os dois arquivos binários resultantes forem idênticos. Este teste garante que o código executável não seja afetado por nenhuma opção de depuração, o que garante ainda mais que não haja bugs ocultos no código de depuração. Note que o uso da opção-fcompare-debug
aumenta significativamente o tempo de compilação. Consulte a página do manual GCC para obter detalhes sobre esta opção.
Recursos adicionais
- Capítulo 7, Habilitando a depuração com informações de depuração
- Usando a Coleção de Compiladores GNU (GCC)
- Depuração com GDB
A página do manual do GCC:
$ homem gcc