Escolar Documentos
Profissional Documentos
Cultura Documentos
DDD – Data Display Debugger
O DDD é um frontend, uma interface gráfica para interação com o usuário, para
depuradores de linha de comando, como o GDB. Ele é licenciado através da GPL.
O DDD permite associar o programa que está sendo depurado com seu código
fonte, além de exibir o código gerado em linguagem de máquina.
Sua grande vantagem está no fato de exibir a memória utilizada pelo programa
(como já diz o nome, data display). Em outras palavras, o DDD exibe as variáveis utilizadas
pelo programa, juntamente com seu conteúdo, além de ponteiros com suas referências e
estruturas de dados.
Link: http://www.gnu.org/software/ddd/
Depurando programa em C
Suponhamos que queremos depurar o seguinte programa, que apenas preenche um vetor de
inteiros de “N” posições com o valor de sua posição (vetor[2] receberá 2) e que contém um
ponteiro apontando para a variável “i” (sem funcionalidade). O programa foi salvo no
arquivo “debug.c”.
#include <stdio.h>
#define N 5
int main(){
int i;
int vetor[N];
int *ponteiro = NULL;
for (i = 0; i<N; i++){
vetor[i] = i;
}
ponteiro = &i;
}
O primeiro passo para podermos depurálo, é com compilar ele a opção “g”:
$ gcc o debug g debug.c
Programa de Educação Tutorial – PET Ciência da Computação
Agora, basta abrir o programa compilado com o DDD
$ ddd debug
A seguinte janela será aberta:
Programa de Educação Tutorial – PET Ciência da Computação
O interessante do DDD está em ativar a “Data Window”, para vermos as variáveis utilizadas
pelo programa, e a “Machine Code Window”, para ver o código de máquina gerado. Isso
pode ser feito na guia “View”. Habilitando essas duas “janelas”, a tela ficará assim:
Com isso, já poderemos ver o código de máquina gerado.
Programa de Educação Tutorial – PET Ciência da Computação
Para depurar o programa, primeiramente precisamos inserir um “breakpoint”, onde
o programa irá parar sua execução normal. Para isso, basta clicar com o botão direito do
mouse na linha onde se quer que o programa pare e ir em “Set Break Point”.
Feito isso, podemos executar o programa, clicando em “Run”. O programa
executará até chegar no breakpoint (ele não executará a linha onde está o breakpoint) .
Podemos, então, executar instrução por instrução do código escrito – neste caso em C,
clicando em “Next”, ou ainda, instrução por instrução do código gerado em linguagem de
máquina, clicando em “Nexti”
Programa de Educação Tutorial – PET Ciência da Computação
Para vermos como os dados do programa estão “organizados na memória”, ou seja,
vermos o que há em cada variável, basta clicar duas vezes nas variáveis que desejamos
conferir o conteúdo (no próprio códigofonte do programa exibido).
Programa de Educação Tutorial – PET Ciência da Computação
Para ver para onde os ponteiros estão apontando, basta dar um duplo clique no
“endereço do ponteiro”, ou seja, na figura anterior, onde há (int *)0x0
Neste caso, clicamos ali após passarmos pela instrução que faz a variável “ponteiro”
apontar para a variável “i” (ponteiro = &i).
Programa de Educação Tutorial – PET Ciência da Computação
Este foi apenas um exemplo simples de como utilizar o DDD para depurarmos um
programa, vendo como suas variáveis estão organizadas na memória. O manual completo
deste programa pode ser encontrado em:
http://www.gnu.org/manual/ddd/html_mono/ddd.html
Escrito por Adriano Pereira
Santa Maria, agosto de 2008