105 votes

Correction des erreurs de segmentation en C ++

J'écris un programme C ++ multiplateforme pour Windows et Unix. Du côté de la fenêtre, le code se compilera et s'exécutera sans problème. Du côté Unix, il compilera cependant quand j'essaye de l'exécuter, j'obtiens un défaut de segmentation. Ma première impression est qu'il y a un problème avec les pointeurs.

Quelles sont les bonnes méthodologies pour trouver et corriger les erreurs de segmentation?

37voto

paleozogt Points 2553

Parfois, le crash lui-même n'est pas la véritable cause du problème - peut-être que la mémoire a été brisée plus tôt, mais il a fallu un certain temps pour que la corruption se manifeste. Vérifiez valgrind , qui a beaucoup de vérifications pour les problèmes de pointeur (y compris la vérification des limites du tableau). Il vous indiquera où le problème commence , pas seulement la ligne où le crash se produit.

6voto

wheaties Points 20917

Sous Unix, vous pouvez utiliser valgrind pour trouver des problèmes. C'est gratuit et puissant. Si vous préférez le faire vous-même, vous pouvez surcharger les new et delete pour configurer une configuration où vous avez 1 octet avec 0xDEADBEEF avant et après chaque nouvel objet. Suivez ensuite ce qui se passe à chaque itération. Cela peut ne pas tout attraper (vous n'êtes même pas assuré de toucher ces octets), mais cela a fonctionné pour moi dans le passé sur une plate-forme Windows.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X