web-dev-qa-db-fra.com

Où rechercher le fichier principal généré par le crash d'une application Linux?

J'essaie de trouver la raison du plantage d'une de mes applications Linux. Mais je ne sais pas où va le cœur.

cat /proc/sys/kernel/core_pattern
core.%e.%p

Une idée?

20
dcds

Le vidage de mémoire est écrit dans le répertoire courant du processus au moment du crash.

Bien sûr, les vidages mémoire doivent être activés, par défaut ceux-ci sont généralement désactivés. Vérifiez la sortie de ulimit -c, si c'est 0, aucun fichier de base ne sera écrit. Courir ulimit -c unlimited pour activer les vidages mémoire; il s'agit d'un paramètre par processus hérité des processus démarrés par ce processus.

Si un vidage de mémoire devait avoir été généré mais que vous ne savez pas où, alors vous pouvez recommencer le processus (s'il le fait sans planter immédiatement), puis vérifier son répertoire de travail en faisant ls -l /proc/$pid/cwd$pid est l'ID de processus du processus. Ce lien pointera vers le répertoire de travail actuel de ce processus. Il y a de fortes chances que le vidage de mémoire soit là. Sinon, vous devez exécuter find sur l'ensemble du système ...

24
wurtel

Les systèmes utilisant systemd sont généralement configurés pour vider les cœurs vers

/var/lib/systemd/coredump/

Vous pouvez utiliser la commande coredumpctl pour répertorier les vidages mémoire. Voir aussi no-more-coredumps-after-migration-to-systemd

20
StefanQ