【发布时间】:2011-07-06 11:38:27
【问题描述】:
我需要调查 Java 客户端应用程序的崩溃。它是一个 Swing 应用程序,在 Windows 上的 Java SE 6 Update 23 上的 Java Web Start 环境中运行。不幸的是,对于某些崩溃情况,没有创建 hs_err_pid 文件。它不在桌面上,所以我在 PC 上搜索它并没有找到它(桌面上有一个旧的 hs_err_pid 文件,用于相同的应用程序,所以假设应该创建新文件是合理的那里也有)。最后日志中没有异常,因为它通常发生在JVM崩溃Java异常时,所以看起来应该是创建hs_err_pid文件导致的崩溃。
我是否需要配置一些东西才能让它工作? Dr. Watson 的配置会影响 hs_err_pid 文件的创建吗?
谢谢
我们配置了 Dr'Watson 并分析了核心转储文件,该文件是在应用再次崩溃后创建的。我看到的错误是“访问冲突”。从堆栈跟踪中,我能够看到崩溃是由我们使用的第三方的本机代码中的异常引起的。这足以将问题委托给他们。
底线:
1. JVM没有按预期处理一些Java崩溃,导致没有创建hs_err_pid文件。
2. 在这些情况下,将操作系统配置为创建核心转储会有所帮助,因为 JVM 未处理的崩溃将由操作系统处理。在这种情况下,您获得的信息会更少,但它仍然会有所帮助。
【问题讨论】:
-
JVM 因 Java 异常而崩溃 - 异常是什么,您能否在此处粘贴堆栈跟踪或代码。
-
@Suresh - 他正在尝试找到日志输出,该日志输出将为他提供有关崩溃的更多详细信息(包括异常跟踪,如果有的话)。
-
如果进程无权访问它通常写入的目录,它就不会写入文件。
-
@Peter Lawrey 用户桌面上已经有我们应用程序的旧 hs_err_pid 文件,因此用户可以访问该目录。在某些特定条件下未创建 Looks 文件
-
你有没有弄明白这件事?我也有这个问题。 JVM 崩溃,有核心转储,但没有 hs_err 文件。工作目录中有足够的空间和写权限(这就是核心转储文件放在那里的原因。) hs_err 文件仅在大约 50% 的时间生成。