web-dev-qa-db-ja.com

クラッシュ時にhs_err_pidファイルが作成されない原因は何ですか?

Javaクライアントアプリケーションのクラッシュを調査する必要があります。これはSwingアプリケーションであり、WindowsのJava SE 6 Update23のJava WebStart環境で実行されます。残念ながら、一部のクラッシュケースでは、hs_err_pidファイルが作成されませんでした。デスクトップ上になかったので、PCで検索しましたが、見つかりませんでした(同じアプリケーションの古いhs_err_pidファイルがデスクトップ上にあったので、新しいファイルが作成されたはずだと考えるのが妥当です。そこにも)。 Java例外でJVMがクラッシュすると通常発生するため、最終的にログに例外はありません。したがって、hs_err_pidファイルの作成時に発生するはずのクラッシュのように見えます。

それを機能させるために何かを構成する必要がありますか?ワトソン博士の構成はhs_err_pidファイルの作成に影響を与えますか?

ありがとう

ワトソン博士を構成し、アプリが再びクラッシュした後に作成されたコアダンプファイルを分析しました。私が見たエラーは「アクセス違反」でした。スタックトレースから、使用しているサードパーティのネイティブコードの例外が原因でクラッシュが発生していることがわかりました。これは問題を彼らに委任するのに十分でした。

結論:
1。一部のJavaクラッシュは、JVMによって期待どおりに処理されないため、hs_err_pidファイルは作成されません。
2。コアダンプを作成するようにOSを構成すると、JVMによって処理されないクラッシュがOSによって処理されるため、このような場合に役立ちます。この場合、取得する情報は少なくなりますが、それでも役立つ場合があります。

14
Leonid B

ネイティブスタックオーバーフローの結果としてクラッシュが発生した場合(通常、アプリケーションがスタックガードページの読み取り/書き込みを試行するとSIGSEGVが発生します)、多くのプラットフォーム(Linuxなど)では、作成するプロセス以降、hs_err_pidファイルは生成されません。スタックスペースが不足している場合、ファイルは完了できません。

8
BeeOnRope

ご了承ください hs_err_pid.logファイルは、実際にJVMがクラッシュした場合にのみ作成されます。

どこかで未処理の例外が原因でアプリケーションが「のみ」終了した場合、そのようなファイルは作成されません。

クラッシュが実際のJVMクラッシュであったことを確認しますか?

6
Joachim Sauer

JDK 5 http://Java.Sun.com/j2se/1.5/pdf/jdk50_ts_guide.pdf

When a fatal error occurs an error log is created in the file

hs_err_pid.log(ここで、はプロセスのプロセスIDです)。可能な場合、ファイルはプロセスの作業ディレクトリに作成されます。作業ディレクトリにファイルを作成できない場合(スペース不足、権限の問題、またはその他の問題)、ファイルはオペレーティングシステムの一時ディレクトリに作成されます。 SolarisおよびLinuxでは、一時ディレクトリは/ tmpです。 Windowsでは、一時ディレクトリはTMP環境変数の値によって指定されます。定義されていない場合は、TEMP環境変数の値によって指定されます。

3
Dead Programmer