Come posso leggere un file di crash da / var / crash


20

php-fpm si è schiantato su di noi e ha scaricato un file

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

Ci sono alcune informazioni in quel file ma quello che sto cercando è nella sezione chiamata CoreDump in un formato codificato base64. Come posso leggere ciò che era in esecuzione al momento dell'incidente?

Risposte:


18

Nel caso in cui non si desideri installare una serie di sotto-dipendenze per lo apport-retracestrumento, è possibile decomprimere il formato apport in file separati e utilizzare solo il CoreDumpdump gdbcome al solito.

  1. apport-unpack systemGeneratedCrashReportPath.crash yourNewUnpackDirectoryHere
  2. cd yourNewUnpackDirectoryHere/
  3. gdb `cat ExecutablePath` CoreDump (fai attenzione alle tilde qui!)
  4. bt (output back-trace effettivo)

    Nota: apport-unpacka volte si arresta in modo anomalo durante l'operazione di decompressione (apport sembra rotto tutto intorno ... xD), ma CoreDump e altri file saranno lì, semplicemente ignoralo ed elimina tutti i file .crash /var/crashdopo averli spostati altrove per consentire sistema per generare nuovi rapporti sugli arresti anomali dalle stesse app lì.


1
Ha funzionato come un fascino, senza richiedere l'installazione di apport-retrace , grazie!
greuze,

1
@digital_infinity no ?! Guardalo da solo. C'è una grande differenza tra eco e gatto ...
stamster

2
@stamster Hai ragione. Scusa, mi sono perso che esiste un file con il nome ExecutablePath. Ho pensato che il lettore deve riempire il percorso eseguibile lì.
digital_infinity

15

Esiste uno strumento chiamato apport-retraceche legge i file .crash e consente di riempirlo con una traccia dello stack completamente simbolica o eseguire una gdbsessione utilizzando il dump principale. Per avviare una sessione gdb, esegui apport-retrace -g CRASHFILE.crash. Si noti che è necessario disporre dei pacchetti -dbg installati per ottenere una buona traccia dello stack.

Detto questo (non sono un esperto di PHP), potrebbe effettivamente essere qualcosa che hai scritto in uno dei tuoi file a causare l'incidente.


4
Doesn t seem to work: # apport-retrace -g _usr_sbin_php5-fpm.1002.crash ERRORE: il file di report non contiene uno dei campi richiesti: CoreDump DistroRelease Package ExecutablePath` # grep CoreDump _usr_sbin_php5-fpm.1002.crash CoreDump: base64
user76369

10
Modifica il file di arresto anomalo e aggiungi il campo "Pacchetto: 0" in ExecutableTimestamp.
DarkNeuron
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.