一部のアプリケーションの開発中に、プログラムの実行を完全に停止することなく完全なコア ダンプを取得する必要が生じました。
継続が安全に不可能なコア ダンプを生成する条件があることは認められますが、メモリの破損などについて話しているわけではありません。
私がやろうとしているのは、プログラムに信号を送信し、プログラムの実行に影響を与えることなく、または最小限に抑えて完全なコアを生成することです
これは可能ですか?もしそうなら、どのように?
この Google ライブラリを参照してください。役立つ場合があります: http://code.google.com/p/google-coredumper/
コアダンパー ライブラリをアプリケーションにコンパイルして、実行中のプログラムのコア ダンプを作成できます。終了する必要はありません。
Coredumpberは Linux 用であり、それがあなたの OS である場合は明らかに素晴らしいアイデアです。
他の Posix ライクなシステムでは、次のようなものがうまく動作するはずです。
#include <stdlib.h>
#include <process.h>
// Fork and abort for a core dump. This process keeps running.
if (fork() == 0) abort();
もちろん、環境は でコアをダンプするように設定する必要がありますSIGABRT
。raise(SIGTERM)
のような を試すこともできますkill -9
。