António Pedro Cunha

Médico natural de Guimarães, formado na Universidade do Minho. Programador autodidacta em parte dos tempos livres, inscrito no fórum desde 2006.
GitHub Twitter

Debug de Aplicações em C

Neste artigo pretende-se dar ao iniciado na programação (e não só) uma ideia de como depurar os seus programas, seja com recurso à própria linguagem, introduzindo no programa código que permita despistar erros, seja com recurso a programas externos, neste caso o gdb.

É minha opinião que todos os iniciados na programação devem experimentar mover a sua aprendizagem para um sistema *nix (no meu caso, utilizo Linux), e assim sendo, este artigo assume que o leitor tem acesso a um sistema semelhante, embora isso não seja de todo um pré-requisito (o gdb também está disponível para Windows). Sendo a linguagem C bastante importante no currículo do programador e ubíqua no mundo da computação (especialmente no dos iniciados), este artigo foca-se na depuração de software escrito nessa linguagem e na utilização do gdb, um debugger poderoso e muito utilizado, disponível para imensas plataformas.

Todo o código apresentado neste artigo foi compilado com o gcc versão 4.6.3 e as sessões de debug foram levadas a cabo com o gdb versão 7.5.1 num sistema com Linux instalado (kernel 3.8.13, embora isto não seja muito importante). Os (pequenos) programas apresentados são compilados com as seguintes flags:

-Wall -Wextra -std=c99 -pedantic -O0 -ggdb3

Makefiles

Criação de Makefiles

Antes de começar, convém referir que neste artigo assumimos a utilização de um ambiente *nix com acesso a uma shell (bash neste caso) e com o GNU make e gcc instalados. Mais à frente no artigo, é utilizado também o utilitário sed, que implica conhecimento de expressões regulares (regex).

Há quem dispense o IDE a favor da linha de comandos e compile os seus programas manualmente, algo especialmente importante para os iniciados, uma vez que proporciona uma excelente oportunidade para compreender de forma relativamente aprofundada o processo de compilação. Para projectos simples, a compilação directa na linha de comandos é perfeitamente apropriada. No entanto, torna-se conveniente automatizar a compilação de projectos mais complexos, e uma das ferramentas criadas para isso mesmo é o make.

Continuar a ler