Je pense bien que l'erreur doit se trouver ailleurs, invisible, mais comment savoir où ?
Depuis un an, je développe beaucoup en C sur un projet, et pour beaucoup d'erreur, le code fautif était très loin de l'endroit où se manifestait le plantage. Tout simplement parce que l'erreur, par exemple un dépassement de tampon, écrasait des données qui n'étaient utilisée que plus loin.
Maintenant, comment savoir où ... Utiliser Electric Fence était une bonne idée, mais ne résoud pas tout. Valgrind, mentionné par quelqu'un d'autre peut aider.
Sinon, reste à étudier le code, ajouter des informations de débugage, en affichant par exemple le contenu d'un tas de structures. Pour mes développements, sur lequels je suis plus ou moins une logique objet, j'ai pour chacune de mes structures de données une fonction qui en affiche le contenu, avec les adresses des pointeurs. Afficher ces infos avant et après des appels de fonctions peut permettre de contrôler quels pointeurs/contenus ont été modifiés.
[^] # Re: bizarre
Posté par Jllc . En réponse au message bug gcc ? ou je n'y comprend plus rien .... Évalué à 2.
Depuis un an, je développe beaucoup en C sur un projet, et pour beaucoup d'erreur, le code fautif était très loin de l'endroit où se manifestait le plantage. Tout simplement parce que l'erreur, par exemple un dépassement de tampon, écrasait des données qui n'étaient utilisée que plus loin.
Maintenant, comment savoir où ... Utiliser Electric Fence était une bonne idée, mais ne résoud pas tout. Valgrind, mentionné par quelqu'un d'autre peut aider.
Sinon, reste à étudier le code, ajouter des informations de débugage, en affichant par exemple le contenu d'un tas de structures. Pour mes développements, sur lequels je suis plus ou moins une logique objet, j'ai pour chacune de mes structures de données une fonction qui en affiche le contenu, avec les adresses des pointeurs. Afficher ces infos avant et après des appels de fonctions peut permettre de contrôler quels pointeurs/contenus ont été modifiés.