数年前、Google はコアダンパー ライブラリをリリースしました。
<ブロック引用>概要
コアダンパー ライブラリをアプリケーションにコンパイルして、実行中のプログラムのコア ダンプを作成できます。終了する必要はありません。カーネルがネイティブでマルチスレッド コア ファイルをサポートしていない場合でも、シングルスレッドとマルチスレッドの両方のコア ダンプをサポートします。
Coredumper は、BSD ライセンスの条項に基づいて配布されます。
例
これは決して完全な例ではありません。コアダンパー API がどのようなものかを簡単に理解できます。
#include <google/coredumper.h>
...
WriteCoreDump('core.myprogram');
/* Keep going, we generated a core file,
* but we didn't crash.
*/
それはあなたが求めていたものではありませんが、もっと良いものかもしれません :)
信号番号 6 の発生 (SIGABRT
Linux では) は、それを行う 1 つの方法です (ただし、SIGABRT は必須ではないことに注意してください) すべての POSIX 実装で 6 になるため、SIGABRT
を使用することをお勧めします。 これがクイックアンドダーティ デバッグ コード以外の場合は、それ自体を評価してください)。
#include <signal.h>
: : :
raise (SIGABRT);
abort()
を呼び出す コア ダンプも発生します。せずにこれを実行することもできます。 fork()
を呼び出してプロセスを終了する 続いて abort()
子のみ - 詳細については、この回答を参照してください。