php-fpm s'est écrasé sur nous et a vidé un fichier dans
/var/crash/_usr_sbin_php5-fpm.1002.crash
Il y a quelques informations dans ce fichier mais ce que je cherche, c’est dans la section intitulée CoreDump dans un format encodé en base64. Comment puis-je lire ce qui courait au moment de l'accident?
Il existe un outil appelé apport-retrace
qui lit les fichiers .crash et vous permet de le remplir avec une trace de pile entièrement symbolique ou d'exécuter une session gdb
en utilisant le vidage principal. Pour démarrer une session gdb, exécutez apport-retrace -g CRASHFILE.crash
. Notez que les packages -dbg doivent être installés pour obtenir un bon suivi de la pile.
Cela étant dit (je ne suis pas un expert en PHP), il se peut que ce soit quelque chose que vous avez écrit dans l'un de vos fichiers qui cause le crash.
Si vous ne souhaitez pas installer un ensemble de sous-dépendances pour l'outil apport-retrace
, vous pouvez décompresser le format ADN dans des fichiers distincts et utiliser uniquement le vidage CoreDump
avec gdb
comme d'habitude.
apport-unpack systemGeneratedCrashReportPath.crash yourNewUnpackDirectoryHere
cd yourNewUnpackDirectoryHere/
gdb `cat ExecutablePath` CoreDump
(faites attention aux tildes ici!)bt
(sortie de trace réelle)
Remarque: apport-unpack
se bloque parfois lui-même lors d'une opération de décompression (une somme semble cassée de partout ... xD), mais votre CoreDump et d'autres fichiers sont présents. Ignorez-le et supprimez tous les fichiers .crash dans /var/crash
après les avoir déplacés ailleurs. pour permettre au système de générer de nouveaux rapports d'incident à partir des mêmes applications.