2

Java (Eclipse) アプリケーションが子プロセスを生成し、その stdout ストリームと終了値を監視しています。子プロセスが SIGABRT でクラッシュしている場合、コア ダンプ ファイルは作成されません。子プロセスを手動で開始して強制終了すると、コア ダンプが正常に表示されます。

JVM が何らかの方法で子プロセスを準備するかどうか (たとえば、コア ダンプ ファイルのサイズを 0 に設定するなど) に関する情報は見つかりませんでした。

コア ダンプが作成されるように、何が起こっているのか、どの設定を変更する必要があるのか​​ を知っている人はいますか?

これは Suse 10 と Ubuntu 9.04 で、Java 5 と 6 を使用しています。

よろしく、 ヴラド

4

1 に答える 1

3

通常、コア ファイルの (非) 作成は、ulimitコマンド (具体的には ulimit -c) によって制御されます。詳細についてはhelp ulimit、(bash で) を参照してください。

この設定はシェルからサブシェルに継承する必要があるため、Java は起動元のシェルの設定を使用する必要があります。Java は ulimit をいじるかもしれませんが、これを行っているとは聞いたことがありません。

シェルで ulimit を設定してから、そこから Java プロセスを開始してみてください。それでも問題が解決しない場合は、ulimit を設定する Java からラッパー スクリプトを呼び出してから、プログラムを開始することができます。

于 2009-08-31T10:02:08.640 に答える