2009-08-31 4 views
2

Java(Eclipse)アプリケーションが子プロセスを生成し、その標準出力ストリームと終了値を監視しています。子プロセスがSIGABRTでクラッシュすると、コアダンプファイルは作成されません。子プロセスを手動で起動して終了させると、コアダンプは正常に終了します。Javaから生成されたプロセスのコアダンプ

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

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

これは、違いがあれば、SUSE 10とUbuntu 9.04(Java 5と6)です。

よろしく、

ヴラド
+0

子プロセスの生成方法を正確に記述するコードのような詳細を追加してください。 –

+0

あなたの現在の作業ディレクトリがプロセスによって書き込み可能でない場合、コアダンプは生成されないと思います。それは可能でしょうか? –

+0

作業ディレクトリは書き込み可能です。同じアプリケーションが手動で開始され、コード・ダンプが生成されます。 –

答えて

3

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

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

ulimitをシェルで設定してから、そこからJavaプロセスを開始してください。それが助けにならない場合は、Javaからulimitを設定するラッパー・スクリプトを起動し、プログラムを開始することができます。

+0

ありがとう、私はラッパーで試してみる、それについて考えなかった。 –

+0

これはうまくいってくれました。 –

関連する問題