Bagaimana saya bisa membaca file crash dari / var / crash

20

php-fpm mogok pada kami dan membuang file

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

Ada beberapa info dalam file itu tetapi apa yang saya cari ada di bagian yang disebut CoreDump dalam format yang disandikan base64. Bagaimana saya bisa membaca apa yang sedang berjalan pada saat crash?

pengguna76369
sumber

Jawaban:

18

Jika Anda tidak ingin menginstal banyak sub-dependensi untuk apport-retracealat, Anda dapat membongkar format apport ke file terpisah dan hanya menggunakan CoreDumpdump dengan gdbseperti biasa.

  1. apport-unpack systemGeneratedCrashReportPath.crash yourNewUnpackDirectoryHere
  2. cd yourNewUnpackDirectoryHere/
  3. gdb `cat ExecutablePath` CoreDump (perhatikan tildes di sini!)
  4. bt (menampilkan jejak balik aktual)

    Catatan: apport-unpackkadang-kadang akan crash sendiri pada operasi unpack (apport tampaknya rusak di sekitar ... xD), tetapi CoreDump Anda dan file lain akan ada di sana, abaikan saja dan hapus semua file .crash /var/crashsetelah Anda memindahkannya ke tempat lain untuk memungkinkan sistem untuk menampilkan laporan kerusakan baru dari aplikasi yang sama di sana.

stamster
sumber
1
Bekerja seperti jimat, tanpa harus memasang retrace , terima kasih!
greuze
1
@ digital_infinity tidak ?! Lihat sendiri. Ada perbedaan besar antara gema dan kucing ...
stamster
2
@stamster Kamu benar. Maaf saya ketinggalan ada file dengan nama ExecutablePath. Saya pikir pembaca harus mengisi jalur yang dapat dieksekusi di sana.
digital_infinity
15

Ada alat yang disebut apport-retraceyang membaca file .crash dan memungkinkan Anda untuk mengisinya dengan jejak stack yang sepenuhnya simbolis atau menjalankan gdbsesi menggunakan dump inti. Untuk memulai sesi gdb, jalankan apport-retrace -g CRASHFILE.crash. Perhatikan bahwa Anda perlu menginstal paket -dbg untuk mendapatkan jejak stack yang bagus.

Yang sedang berkata (saya bukan ahli PHP), mungkin sebenarnya sesuatu yang Anda tulis di salah satu file Anda yang menyebabkan crash.

saiarcot895
sumber
4
Tidak t seem to work: # apport-retrace -g _usr_sbin_php5-fpm.1002.crash ERROR: file laporan tidak mengandung salah satu bidang yang diperlukan: CoreDump DistroRelease Package ExecutablePath` # grep CoreDump _usr_sbin_php5-fpm.1002.crash CoreDump: base64
user76369
10
Edit file macet dan tambahkan bidang "Paket: 0" di bawah ExecutableTimestamp.
DarkNeuron