Ce n´est pas parce qu´un programme compile qu´il fonctionne ! ^^
Et c´est là que le débugueur est intéressant.
Un exemple simple pour fixer les idées :
$ cat test.c
- include <stdio.h>
int pouet(int entier)
int
main() {
int i;
printf("Le débugage c´est trop bien !\ n");
pouet(i);
return 0;
}
int
pouet(int entier) {
printf("J´ai reçu %d\n", entier);
return entier;
}
Ce programme compile nickel :
$ cc -g -o test test.c
$ ./test
Le débugage c´est trop bien !
J´ai reçu 1234
$
Fichtre mais d´où sort ce 1234 ?! ?
Bon bah j´vais débuguer un coup histoire de voir d´où ça sort !
$ gdb test
[...]
(gdb) break main
[...]
(gdb) run
[...]
Breakpoint 1, main () at toto.c:5 gdb stops at main()
(gdb) n
Le débugage c´est trop bien !
(gdb) s
pouet (entier=1234) at test.c:14
(gdb)
Damned ! J´ai oublié d´initialiser i !! !
Correction :
$ cat test.c
[...]
int
main() {
int i;
i = 5;
[...]
$ cc -g -o test test.c
$ ./test
Le débugage c´est trop bien !
J´ai reçu 5
$
Et voilà. Bon c´est un exemple basique de chez basique, mais j´espère que ça vous aura aider à comprendre l´intérêt d´un débugueur. ^^
PS : désolé pour l´indentation, mais ce forum n´a pas l´air de trop aimer...