Langage C - Travaux Dirigés n° 3


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, 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  supprime le point d'arrêt No 
  • 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  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 updown ou frame .
  • display  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.


Post a Comment

Plus récente Plus ancienne