GNU/Linux >> Belajar Linux >  >> Linux

Cara secara terprogram menyebabkan core dump di C/C++

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.


Linux
  1. Bagaimana Cara Menentukan Pengkodean Karakter yang Digunakan Terminal Dalam Program C/c++?

  2. Bagaimana cara menginstal Dotnet Core di Centos 7?

  3. Bagaimana cara membuat video secara terprogram?

  1. Bagaimana aplikasi C/C++ saya menentukan apakah pengguna root menjalankan perintah?

  2. Bagaimana cara mendapatkan nama pengguna di C/C++ di Linux?

  3. Kenapa tidak ada dump inti yang dibuat ketika aplikasi memiliki SUID yang disetel?

  1. Cara mengaktifkan core dump untuk Aplikasi di CentOS/RHEL

  2. Bagaimana cara secara terprogram mendapatkan ukuran halaman cache CPU di C++?

  3. Bagaimana cara membuang lalu lintas USB?