¿Cómo puedo leer un archivo de bloqueo de / var / crash

20

php-fpm se estrelló contra nosotros y arrojó un archivo en

/var/crash/_usr_sbin_php5-fpm.1002.crash

Hay algo de información en ese archivo, pero lo que busco está en la sección llamada CoreDump en un formato codificado en base64. ¿Cómo puedo leer lo que estaba funcionando en el momento del accidente?

user76369
fuente

Respuestas:

18

En caso de que no desee instalar un montón de subdependencias para la apport-retraceherramienta, puede desempaquetar el formato de distribución en archivos separados y usar solo CoreDumpdump con gdblo habitual.

  1. apport-unpack systemGeneratedCrashReportPath.crash yourNewUnpackDirectoryHere
  2. cd yourNewUnpackDirectoryHere/
  3. gdb `cat ExecutablePath` CoreDump (¡presta atención a tildes aquí!)
  4. bt (salida de rastreo real)

    Nota: apport-unpacka veces se bloquea en la operación de desempaquetado (el soporte parece roto por completo ... xD), pero su CoreDump y otros archivos estarán allí, simplemente ignórelo y elimine todos los archivos .crash /var/crashdespués de moverlos a otro lugar para permitir sistema para generar nuevos informes de fallas desde las mismas aplicaciones allí.

Stamster
fuente
1
Funcionó de maravilla, sin necesidad de instalar apport-retrace , ¡gracias!
greuze
1
@digital_infinity no ?! Véalo usted mismo. Hay una gran diferencia entre echo y cat ...
stamster
2
@stamster Tienes razón. Lo siento, me perdí que hay un archivo con nombre ExecutablePath. Pensé que el lector debe completar la ruta ejecutable allí.
digital_infinity
15

Existe una herramienta llamada apport-retraceque lee los archivos .crash y le permite llenarlo con una traza de pila completamente simbólica o ejecutar una gdbsesión utilizando el volcado del núcleo. Para iniciar una sesión de gdb, ejecute apport-retrace -g CRASHFILE.crash. Tenga en cuenta que necesita tener instalados los paquetes -dbg para obtener un buen seguimiento de la pila.

Dicho esto (no soy un experto en PHP), podría ser algo que escribiste en uno de tus archivos que está causando el bloqueo.

saiarcot895
fuente
44
No t seem to work: # apport-retrace -g _usr_sbin_php5-fpm.1002.crash ERROR: el archivo de informe no contiene uno de los campos obligatorios: CoreDump DistroRelease Package ExecutablePath` # grep CoreDump _usr_sbin_php5-fpm.1002.crash CoreDump: base64
user76369
10
Edite el archivo de bloqueo y agregue el campo "Paquete: 0" en ExecutableTimestamp.
DarkNeuron