0

私のプロジェクトでは、新しいモジュールを追加しましたが、現在、プロセスはシグナル 11 によって終了しています。問題を追跡して理解したいのですが、freebsd によってコアダンプ ファイルが生成されません。私はsysctlを次のように設定しました:

sysctl -a | grep core
kern.corefile: /usr/core
kern.nodump_coredump: 1
kern.coredump: 1
kern.sugid_coredump: 1
debug.elf64_legacy_coredump: 1
debug.elf32_legacy_coredump: 1

ulimit -c unlimited も設定しました

私のコードから、「sigaction(SIGTERM, &signal, &signal_old);」のようなシグナルに関するすべてのコードを削除しました。カーネルがコアダンプを生成するのを妨げないため。

まだコアダンプが表示されないのはなぜですか? 私が欠けているものは何ですか?

また、freebsd で実行されるプログラムに、Linux の do_coredump() に相当するコアダンプを強制的に作成させる方法はありますか?

4

2 に答える 2

1

私の記憶が正しければ、kern.corefile は結果のコアファイルの完全な名前であり、それを配置するディレクトリではありません。また、プロセスを実行しているユーザーが書き込み可能である必要があります。/usr/core は、ルートのみが書き込み可能なディレクトリおよび/または場所のように見えます。

kern.nodump_coredump: 1 も疑わしいようです。前回使用した FreeBSD のバージョンに sysctl が存在していたかどうかは覚えていませんが、コア ダンプを無効にするためのもののようです。0に設定してみてください。

于 2013-05-17T14:10:12.583 に答える