comment faire pour afficher une segmentation fault (core dumped)
Je suis incapable d'aller de l'avant dans arriver à voir le noyau sous-évaluées.
J'ai ceci quand j'ai tapé
gdb normal_estimation core
Reading symbols from /home/sai/Documents/pcl_learning/normal_estimation/build/normal_estimation...(no debugging symbols found)...done.
warning: core file may not match specified executable file.
[New LWP 11816]
warning: Can't read pathname for load map: Input/output error.
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/i386-linux-gnu/libthread_db.so.1".
Core was generated by `./normal_estimation'.
Program terminated with signal 11, Segmentation fault.
#0 0xb53101d6 in free () from /lib/i386-linux-gnu/libc.so.6
(gdb)
S'il vous plaît laissez-moi savoir ce que je dois faire?
no debugging symbols found
: c'est un indice. Activer le débogage lors de la compilation de votre code (désactivation des optimisations aussi aide beaucoup avec le débogage).- j'ai compilé le fichier à l'aide de faire. Comment puis-je donner les symboles de débogage
- Non, vous avez compilé votre code à l'aide d'un compilateur (probablement gcc). Lire la documentation pour savoir comment l'utiliser.
- j'ai utilisé cmake et ensuite faire
- cmake et faire il suffit d'invoquer le compilateur. Vous avez besoin de leur dire comment passer des options appropriées pour votre compilateur. Puisque vous n'avez pas fourni toutes les informations à propos de votre fichier makefile, c'est à vous de comprendre.
Vous devez vous connecter pour publier un commentaire.
La première commande que vous devez apprendre est
backtrace
(ou son synonyme:where
).Cela vous indiquera le code qui a invoqué le
free
, qui s'est écrasé.Cependant, il est possible que ce code n'a rien à voir avec le problème: tout accident dans
free
est toujours causé par la corruption de segment de quelque sorte (libérant non alloué de la mémoire, libérant ainsi la mémoire même deux fois, l'écriture de la mémoire qui a déjà été libéré, ou de débordement d'un tampon alloué).Outils les plus utiles pour diagnostiquer une corruption de segment sur Linux sont Valgrind et D'addresssanitizer. Les Chances sont un de ces outils vont vous dire exactement ce que vous faites mal.