-g
: $ gcc -g -o programa programa.c
-g
indica ao compilador para incluir no executável informação extra para o GDBgdb
sobre o ficheiro executável compilado: $ gdb programa
...
(gdb)
quit
termina a sessão
Ctrl-D
(end-of-file)q
em vez de quit
) $ gcc -o factorial factorial.c
$ ./factorial
Introduza um inteiro positivo:4
Factorial 4 = 0
#include <stdio.h>
int main(void) {
int n, i, fact;
printf("Introduza um inteiro positivo:");
scanf("%d", &n);
for(i = 1; i<=n; i++)
fact = fact*i;
printf("Factorial %d = %d\n", n, fact);
}
Recompilar o programa com opção debugging:
$ gcc -g -o factorial factorial.c
Executar o GDB com o executável compilado:
$ gdb factorial
Usamos o comando run
para correr o nosso programa dentro do GDB:
(gdb) run
Starting program...
Introduza um inteiro positivo:4
Factorial 4 = 0
[Inferior 1 (process 9885) exited...
break
funparar a execução no início da função fun
break
nparar a execução no início linha número n
Podemos usar list
para listar o programa juntamente com números de linhas.
print
var
print
exprmostrar o valor de uma variável ou expressão
display
var
display
exprmostrar o valor de uma variável ou expressão em cada breakpoint
Vamos usar:
break
para colocar um breakpoint no ciclo for
;display
para mostrar os valores de n
, i
, e fact
.fact
é incorreto
int n, i, fact = 1; // corrigido
break
fundefinir breakpoint no ínicio da função fun
break
ndefinir breakpoint no ínicio da linha n
delete
nremover o breakpoint número n
run
executar o programa desde o início
next
executar a próxima linha
step
executar a próxima linha (mas entra dentro de funções)
continue
continuar a execução até ao próximo breakpont (ou até ao final)
print
exprcalcular e mostrar o valor duma expressão
display
exprmostrar o valor da expressão sempre que parar
set var
nome = exprmodificar o valor de uma variável
quit
terminar a sessão