Langage C - Travaux Dirigés n° 3
IUP Mathématiques-Informatique
Exercice n° 1 (Examen de la pile d'exécution)
Récupérer sur la page WEB le source du programme fibonacci.c et compiler le en utilisant
l'option -g de gcc. Avec cette option, gcc
ajoute dans le code objet des infomations de debugging.
Le programme peut alors être exécuté sous contrôle en utilisant
le débogueur gdb. Pour cela, taper dans Emacs
Alt-x gdb, <return>, puis le nom du
programme exécutable, ici fibonacci. Dans la fenêtre
(gdb) d'Emacs, on dispose alors des commandes suivantes pour
contrôler l'exécution le programme.
- run lance l'exécution du programme. les entrées sorties se
font alors dans la fenêtre (gdb) d'Emacs.
- break (Ctrl-x Space ou
Ctrl-x Ctrl-a Ctrl-b)
positionne un point d'arrêt. Le programme s'arrête à chaque fois qu'il
passe à cet endroit. On peut alors examiner le contenu des variables
et de la pile.
- delete <n> supprime le point d'arrêt No <n>
- next exécute une ligne du programme sans traverser les
appels de fonctions (Ctrl-x Ctrl-a
Ctrl-n).
- step exécute une ligne du programme en traversant les
appels de fonctions (Ctrl-x Ctrl-a
Ctrl-s).
- finish exécute le programme jusqu'à la fin de la fonction
(Ctrl-x Ctrl-a
Ctrl-f).
- cont continue l'exécution du programme(Ctrl-x Ctrl-a
Ctrl-r) .
- info stack affiche le contenu de la pile.
- up et down permettent de se déplacer dans la pile
pour examiner le contenu des variables (Ctrl-x
Ctrl-a < et Ctrl-x
Ctrl-a >).
- print <expr> affiche la valeur de l'expression. Les
valeurs des variables utilisée dans l'expression sont celles données
par le bloc de pile sélectionné. C'est par défaut le bloc le plus
interne mais ceci peut être modifié par les commandes up,
down ou frame <n>.
- display <expr> demande l'affichage de l'expression à chaque
arrêt du programme.
Ces commandes sont aussi accessibles par les menus. Il existe beaucoup
d'autres commandes disponibles. Pour en savoir plus, utiliser la
commande help.
Placer un point d'arrêt sur la première ligne de la fonction
fibo et lancer l'exécution du programme. Le programme s'arrête
au premier passage dans la fonction fibo. Examiner le contenu
de la pile puis relancer le programme. Examiner à nouveau la pile puis
relancer à nouveau. Recommencer jusqu'à a terminaison du programme.
Exercice n° 2
Quel est le nombre d'appels récursifs que provoque l'appel à la fonction
fibo avec un entier n. Expérimenter en utilisant une variable
globale puis expliquer.