web-dev-qa-db-ja.com

FreeBSDでアクティブで通常実行中のプログラムからコアを強制的にダンプします

FreeBSD上のサーバーのエラー処理コードを書いています。非常に重大なエラーの場合、すぐに終了することでデータ破損を回避したいと思います。それは簡単です、exit(3)。終了する前に、そこに導かれた関連変数を出力しました。ただし、理想的には、この終了には.coreこの壊滅的な(そしておそらく再現が難しい)状態になった原因を完全に調査できるように。

どうすればこれを強制できますか?

27
Nektarios

kill -QUIT process_idは、実行中のプロセスからコアダンプを発生させます(リソースの制限により許可されている場合)。

または、プログラムにそれ自体をダンプさせるためのman 3 abortを参照してください。

追加:対話型シェルから、実行中のプログラムを終了キーで中止させることができます。通常は Ctrl+\、より一般的なSIGQUITを送信する Ctrl+C SIGINTを送信します。これはkill -QUIT…と同じです。制御端末を使用している場合は入力しやすいだけです。デフォルトの終了キーが異なる場合は、man 1 sttyを参照してください。

36
msw

これ 助けてくれました! kill -11は常に私のために働きます。 11はSIGSEGV(無効なメモリ参照)です

3
Aadishri

Gcore(1)( http://man.freebsd.org/gcore )もご覧ください。

Sles12 ..以下のコードは私のために働いた:

kill -11

前の提案は何もしませんでした。

1
Marvin