Salut mon programme fait une segma fault fault à la toute fin juste avant le return 0 je compile avec g++ sous linux. Je précise que j’utilise beaucoup de liste de unique_ptr. Est ce que quelqu’un saurra d’ou cela pourrait venir?
Le plus simple est de lancer le programme avec les sanitizers, plus particulièrement l'option -fsanitize=address de gcc et de regarder plus en profondeur avec le débogueur ou/et valgrind. Il y a aussi différentes options pour activer le debug de la stl et bien sûr sur les avertissements du compilateur qu'il faut activer et prendre en compte.
J'ai un dépôt qui recense les options à activer: https://github.com/jonathanpoelen/cpp-compiler-options
Le mieux serait d'utiliser celles dans les fichier *stl_debug_broken_abi, *warnings et *sanitizers et qui correspondent à ta version de gcc.
Est ce que quelqu’un saura d’ou cela pourrait venir?
markand a écrit:
Quand ça plante on prend un debugger et on regarde où ça a planté. On ne s'amuse pas à deviner.
@TiboTiboTibo : Le principal est dit ... pas besoin de s'exciter et de faire monter la mayonnaise ... Au pire poste le code incriminé, au mieux apprend à utiliser un debugger ce qui te sera le plus salutaire pour la suite de tes aventures en programmation. Même si la réponse de Markand est un peu sèche à quoi t'attendais-tu sans donner le moindre détail sur ton problème ?
@tous : Repartons sereinement sur ce sujet, merci.
J'ai pas vu les réponses modérées, mais je les imagine très bien... La réponse que j'aurais pu faire à ton post est à peu de chose près celle de Markand, je n'aurais probablement pas été aussi cash que lui, je t'aurais ressorti la vielle rengaine de ma boule de cristal défectueuse qui m'empêche de deviner ce que tu as bien pu faire... Je décline ça sur le ton de l'humour, mais il ne faut pas s'y tromper, le sens des propos est exactement le même.
Quand on poste une question sur un forum, il ne faut jamais oublier que ceux qui vont répondre n'ont pas d'autres éléments que ceux que tu leur a donné. Faute d'éléments précis, tu n'obtiendras pas plus que des réponses floues ou lapidaires.
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
git is great because Linus did it, mercurial is better because he didn't.