Saya mencari cara untuk mengambil coredump non-intrusif dari proses yang berjalan di Linux.
Saya kenal dengan gdb gcore, tapi itu hanya bisa dijalankan ketika gdbdilampirkan ke proses dan dihentikan untuk debugging. Untuk dump core besar yang mungkin berarti beberapa detik, atau bahkan beberapa menit, eksekusi terputus.
Apakah ada alternatif non-pemblokiran?
Linux mendukung memori copy-on-write, yang diandalkan untuk mendukung fork()tanpa exec(). Jadi saya sedang memikirkan sesuatu tingkat kernel di mana kernel mengambil snapshot copy-on-write dari tabel halaman proses dari proses yang dibuang, kemudian menulis inti keluar sementara proses asli terus berjalan.
Saya cukup yakin saya bisa menggunakan gdbuntuk memaksa fork()kemudian membuang anak sementara orang tua melanjutkan dengan bahagia, kemudian wait()pada orang tua untuk menuai anak setelah pemutusan hubungan kerja. Itu berantakan, meskipun, dan masih membutuhkan dua gangguan dari proses induk, meskipun yang pendek.
Tentunya seseorang membutuhkan ini sebelumnya?