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

Programar — como começar?

O leitor poderá achar estranho (sendo já um programador) ao ler um artigo sobre um aspecto passado do seu percurso. Sob esse ponto de vista, este artigo poderá até parecer redundante, mas penso que o tema em questão justifica bem a “redundância”, tendo em conta que a programação é um exercício cada vez mais acessível a qualquer pessoa.

Existe na comunidade de programadores uma estranha ideia de que toda a gente deve começar a programar com a linguagem X, Y ou Z. Frequentemente (e como se pode ver em discussões acesas no Portugal-a-Programar), as linguagens X, Y e Z são frequentemente a linguagem C. Chegamos mesmo ao cúmulo de ver afirmações que parecem sugerir que começar com uma linguagem dinâmica de alto nível (quase diametralmente oposta a C) é equivalente a uma lobotomia seguida da incapacidade permanente de escrever programas eficientes, de baixo nível.

Continuar a ler

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