C/C++ でプログラムによってコア ダンプを発生させる方法

信号番号 6 の発生 (SIGABRT Linux では) は、それを行う 1 つの方法です (ただし、SIGABRT は必須ではないことに注意してください) すべての POSIX 実装で 6 になるため、SIGABRT を使用することをお勧めします。 これがクイックアンドダーティ デバッグ コード以外の場合は、それ自体を評価してください)。

#include <signal.h>
: : :
raise (SIGABRT);

abort() を呼び出す コア ダンプも発生します。せずにこれを実行することもできます。 fork() を呼び出してプロセスを終了する 続いて abort() 子のみ - 詳細については、この回答を参照してください。


数年前、Google はコアダンパー ライブラリをリリースしました。

それはあなたが求めていたものではありませんが、もっと良いものかもしれません :)


シグナルのマンページにリストされているように、「コア」としてリストされているアクションを持つシグナルはコア ダンプを強制します。以下にいくつかの例を示します:

SIGQUIT       3       Core    Quit from keyboard
SIGILL        4       Core    Illegal Instruction
SIGABRT       6       Core    Abort signal from abort(3)
SIGFPE        8       Core    Floating point exception
SIGSEGV      11       Core    Invalid memory reference

コア ダンプが有効になっていることを確認してください:

ulimit -c unlimited