当 Sun Java VM 崩溃时,通常会创建一个 hs_err_pid* 文件(崩溃报告)。但是,我们有一台 Open SuSE Linux 服务器,java 崩溃时没有留下崩溃报告。创建了核心转储(SIGSEGV),但没有创建 hs_err_pid* 文件。
是否存在 Sun VM 不会创建崩溃报告的情况?或者:如何启用它。
我的Java版本:
> java -version
Java(TM) SE Runtime Environment (build 1.6.0_17-b04)
Java HotSpot(TM) 64-Bit Server VM (build 14.3-b01, mixed mode)
ps:这不是文件系统访问权限的问题。在这种情况下,虚拟机将在中创建崩溃报告/tmp
。
答案1
您可以在 VM 选项中找到它:
http://java.sun.com/javase/technologies/hotspot/vmoptions.jsp#DebuggingOptions
-XX:ErrorFile=./hs_err_pid.log 如果发生错误,则将错误数据保存到此文件。(6 版引入)
因此,请尝试使用以下命令启动您的应用:
java -XX:ErrorFile=/tmp/hs_err_pid.log -other_options yourapp.jar
如果这造成了转储,那就没事了。
答案2
问题是,这次崩溃非常严重,甚至崩溃报告程序也无能为力。
启用核心转储并分析系统核心转储导致的根本原因。