gcc débogage, erreur de Segmentation (core dumped) mais pas de noyau
Il a utilisé pour être que j'aurais Segmentation Fault
avec des pas de base, puis j'ai ajouté -ggdb à la commande de la compilation et exécuté cette commande dans bash avant l'exécution de gcc:
ulimit -c unlimited
Tout était bon pour un certain temps (j'ai un core), mais maintenant j'ai Segmentation Fault (core dumped)
mais pas de noyau dans le répertoire où gcc commande a été émise? Pourrait-il en être de passer à autre chose? Quoi d'autre puis-je essayer?
Un peu plus d'infos:
- OS: Gentoo Linux
- Permettre ELF core dumps est activé dans le noyau en cours d'exécution.
- L'application est un éditeur de texte écrit en gtk+
Réponse:
J'ai trouvé deux façons:
find /-name "core" -ls
-
Comme torek suggéré:
$ strace ./exécutable > output.txt 2>,&1
$ grep chdir output.txt
Le vidage du noyau sera dans le processus en cours d'exécution du répertoire courant. Le processus ne
Leffler, merci pour la suggestion. L'application est un éditeur de texte écrit en gtk+. Il n'est pas tout chdir() dans la source que j'ai écrit. Juste pour être sur le côté sécuritaire (dans le cas où il y a quelque chose dans le gtk+ source), j'ai couru avec seulement deux onglets ouverts, les deux fichiers dans le même répertoire (même que le fichier exécutable), toujours pas de noyau.
Le
chdir()
à tous? Si oui, aller où il va.Leffler, merci pour la suggestion. L'application est un éditeur de texte écrit en gtk+. Il n'est pas tout chdir() dans la source que j'ai écrit. Juste pour être sur le côté sécuritaire (dans le cas où il y a quelque chose dans le gtk+ source), j'ai couru avec seulement deux onglets ouverts, les deux fichiers dans le même répertoire (même que le fichier exécutable), toujours pas de noyau.
Le
core
(5) de la page de manuel explique comment vous pouvez contrôler si et quand un core
fichier est généré. Peut-être que la valeur de /proc/sys/kernel/core_pattern
pointe vers un répertoire différent (mon sysadmin réglé le nôtre jusqu'à générer uniquement le nom des fichiers dans /tmp
).
OriginalL'auteur nomadicME | 2012-06-03
Vous devez vous connecter pour publier un commentaire.
@JonathanLeffler noté, le vidage du noyau va dans le répertoire courant.
Vous pouvez utiliser
strace
pour voir si le processus a fait un chdir(). Malheureusementstrace
ne pas montrer d'où le vidage du noyau lui-même est allé, mais:et il y a maintenant un noyau.pid fichier.
OriginalL'auteur torek