next up previous contents index
Next: Variables et pile d'appel. Up: gdb et la structure Previous: gdb et la structure

Les niveaux dans la pile d'appel.

Lorsqu'un programme est interrompu au niveau d'un point d'arrêt, on peut choisir de continuer son exécution pas à pas avec step (comme indiqué ci-dessus) ou avec next : alors que step fait vraiment du pas à pas, next reste au même niveau dans la pile d'appel des fonctions. Ceci signifie que si la prochaine instruction est un appel à une fonction définie dans le programme, step aura pour effet d'interrompre l'exécution à la première instruction du corps de la fonction, alors que next exécutera la totalité de l'appel à la fonction, et s'arrêtera sur l'instruction qui suit l'appel de fonction.

On voit ainsi se dessiner une notion de niveau : un appel de fonction rajoute un niveau, alors que le return terminant l'exécution d'une fonction en enlève un. Une bonne manière de s'habituer à ces concepts est de d'exécuter la commande backtrace : elle affiche la pile d'appel de fonctions, ce qui permet de mieux visualiser ses différents niveaux.

La commande finish sert à continuer l'exécution du programme jusqu'à terminer un niveau : si l'exécution a été interrompue à l'intérieur d'une fonction, cliquer sur ce bouton aura pour effet de relancer l'exécution, sans s'arrêter sur des appels de fonction ultérieurs, mais juste après le return correspondant à la fonction dans laquelle on se trouve (et par conséquent au niveau de l'appel à la fonction dans laquelle on se trouvait au moment de faire finish). En particulier, si l'exécution du programme est interrompue sur une instruction du programme principal, faire finish revient à faire cont.


next up previous contents index
Next: Variables et pile d'appel. Up: gdb et la structure Previous: gdb et la structure
Jean-Philippe Chancelier
9/29/1998