Di mana mencari file inti yang dihasilkan oleh crash aplikasi linux?

18

Saya mencoba mencari tahu alasan crash untuk salah satu aplikasi Linux saya. Tapi saya tidak tahu kemana inti akan pergi.

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

Ada ide?

dcds
sumber

Jawaban:

22

Core dump ditulis dalam direktori proses saat ini pada saat crash.

Tentu saja core dump perlu diaktifkan, secara default itu biasanya dinonaktifkan. Periksa output ulimit -c, jika itu 0 maka tidak ada file inti yang akan ditulis. Jalankan ulimit -c unlimiteduntuk mengaktifkan core dumps; ini adalah pengaturan per proses yang diwarisi oleh proses yang dimulai oleh proses itu.

Jika sebuah dump inti seharusnya dihasilkan tetapi Anda tidak tahu di mana, maka Anda bisa memulai proses lagi (jika itu akan tanpa crash segera), kemudian periksa direktori kerjanya dengan melakukan di ls -l /proc/$pid/cwdmana $pidID proses dari proses tersebut. Tautan itu akan menunjuk ke direktori kerja saat ini dari proses itu. Kemungkinan dump inti akan ada di sana. Kalau tidak, Anda perlu menjalankan findseluruh sistem ...

Wurtel
sumber
3
Saya telah memeriksa ulimit -c yang tidak terbatas, tetapi masih tidak ada dalam direktori proses saat ini.
dcds
1
Ada kemungkinan bahwa aplikasi mendeteksi kesalahan fatal itu sendiri dan dibatalkan, yaitu itu bukan kecelakaan "nyata" seperti pelanggaran segmentasi atau serupa, yang akan menghasilkan dump inti. Ketika Anda tidak memberikan informasi tentang aplikasi itu tidak mungkin diketahui.
Wurtel
1
Ini pasti crash karena saya sengaja melakukan pointer nol.
dcds
20

Sistem yang menggunakan systemd biasanya dikonfigurasi untuk membuang inti

/var/lib/systemd/coredump/

Anda dapat menggunakan coredumpctlperintah untuk membuat daftar dump inti. Lihat juga no-more-coredumps setelah migrasi ke sistemd

StefanQ
sumber