langages de programmation informatiques s'appuient sur une structure de données en pile d'appel --- certains font de sa présence explicite pour le programmeur , alors que tous compter sur une pile pour les sauts de programme qui doit retourner à l'endroit où le programme original s'est arrêté après avoir exécuté une sorte de routine . Avant le transfert du contrôle de code d'utilisateur , un programme définit la taille maximale de la pile d'appel , parmi d'autres préparations . Parfois, un programme abandonne à cause d'une erreur de segmentation , qui peut être causée par une variété de facteurs. Vous pouvez facilement détecter un débordement de pile est à la racine du problème en utilisant un débogueur. Choses que vous devez code source pour le programme compilateur pour le programme Source niveau débogueur avec un support pour l'affichage d'une trace Voir Plus Instructions 1 < p> recompiler le programme qui donne l' erreur de segmentation afin que tous les symboles de débogage sont liés en elle. Par exemple, pour un programme C + + sur un système d'exploitation avec la suite d'outils GNU , exécuter : l'option " g+ + - g program.c -o programme " où le " g " indique au compilateur d' inclure des symboles de débogage. 2 exécuter le programme jusqu'à ce qu'il s'arrête à cause d' une erreur de segmentation . Pour l'exemple , exécutez : «programme» 3 Invoke le débogueur sur le droit de programme après l' erreur de segmentation . Pour l'exemple , exécutez : " programme de gdb " 4 Afficher une trace en utilisant le débogueur. Tous les débogueurs au niveau source ont la capacité d'afficher la chaîne des appels de fonction imbriqués au moment du plantage du programme . Pour notre exemple « gdb », entrer à l'intérieur " gdb : " " trace " 5 Examinez la trace des signes d' une récursion infinie . Est un nom de fonction répété plus de fois que nécessaire avant le crash ? Sont quelques-unes des fonctions qui s'appellent mutuellement ( par exemple , la récursion mutuelle) trop de temps avant l'accident ? Si la réponse à ces deux questions est «oui », le programme s'est arrêté en raison d'un débordement de pile. La cause la plus probable des débordements de pile en langages de haut niveau sont mal codé cas de base.
|