Beberapa tahun lalu, Google merilis pustaka coredumper.
Ikhtisar
Pustaka coredumper dapat dikompilasi ke dalam aplikasi untuk membuat core dumps dari program yang sedang berjalan -- tanpa penghentian. Ini mendukung dump inti tunggal dan multi-utas, bahkan jika kernel secara native tidak mendukung file inti multi-utas.
Coredumper didistribusikan di bawah ketentuan Lisensi BSD.
Contoh
Ini sama sekali bukan contoh yang lengkap; itu hanya memberi Anda gambaran seperti apa API coredumper itu.
#include <google/coredumper.h> ... WriteCoreDump('core.myprogram'); /* Keep going, we generated a core file, * but we didn't crash. */
Bukan itu yang Anda minta, tapi mungkin lebih baik :)
Menaikkan nomor sinyal 6 (SIGABRT
di Linux) adalah salah satu cara untuk melakukannya (meskipun perlu diingat bahwa SIGABRT tidak diperlukan menjadi 6 di semua implementasi POSIX sehingga Anda mungkin ingin menggunakan SIGABRT
menghargai dirinya sendiri jika ini selain kode debug cepat dan kotor).
#include <signal.h>
: : :
raise (SIGABRT);
Memanggil abort()
juga akan menyebabkan core dump, dan Anda bahkan dapat melakukannya tanpa menghentikan proses Anda dengan memanggil fork()
diikuti oleh abort()
pada anak saja - lihat jawaban ini untuk detailnya.