Déterminer où le programme stoppe

Problème

Un programme s’arrête à un endroit inattendu et vous souhaitez savoir précisément, à quelle instruction C, le programme a pris fin.

Solution

Comme dans la recette précédente, utilisez printf() ou un débogueur. Avec un débogueur, suivez le code pas à pas, au fur et à mesure de son exécution, ou effectuez une analyse post mortem de son exécution.

Discussion

Si l’arrêt du programme est dû à un débordement de tampon, il faut savoir que le programme ne stoppe pas à l’endroit où se trouve le bogue, mais plus loin dans la plupart des cas. En effet, le principe du débordement de tampon est de corrompre la mémoire, modifiant de manière aléatoire d’autres données, ce qui amène le programme à prendre fin à un endroit où les données ne sont plus valides. Quand il s’agit d’un bogue de débordement de tampon, autant il n’est pas évident de trouver l’endroit où la mémoire est corrompue, autant il est assez facile d’identifier la nature du bogue. En général, chaque méthode de débogage amènera le programme à s’arrêter à un endroit différent, même si vous lui donnez des données similaires à traiter de la même manière.

Pour trouver l’endroit où...

Pour consulter la suite, découvrez le livre suivant :
couv_EI3CACT.png
60-signet.svg
En version papier
20-ecran_lettre.svg
En version numérique
41-logo_abonnement.svg
En illimité avec l'abonnement ENI
130-boutique.svg
Sur la boutique officielle ENI
Précédent
Déboguer proprement avec printf()
Suivant
Afficher le contenu d'une variable