什么可能导致hs_err_pid文件在崩溃时无法创建?

Leo*_*d B 14 java crash

我需要调查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处理的崩溃.在这种情况下,您将获得更少的信息,但它仍然有用.

Bee*_*ope 8

如果由于本机堆栈溢出而发生崩溃(通常在应用程序尝试读/写堆栈保护页时导致SIGSEGV),则在许多平台(例如,Linux)上不会生成hs_err_pid文件,因为创建的过程如果您没有堆栈空间,则无法完成该文件.


Joa*_*uer 6

请注意,hs_err_pid.log只有在实际的JVM崩溃时才会创建文件.

如果您的应用程序"仅"由于某处未处理的异常而退出,则不会创建此类文件.

你确定崩溃是真正的JVM崩溃吗?


Dea*_*mer 3

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
Run Code Online (Sandbox Code Playgroud)

hs_err_pid.log(其中是进程的进程 ID)。如果可能,该文件会在进程的工作目录中创建。如果无法在工作目录中创建该文件(空间不足、权限问题或其他问题),则会在操作系统的临时目录中创建该文件。在 Solaris 和 Linux 上,临时目录是 /tmp。在 Windows 上,临时目录由 TMP 环境变量的值指定,或者如果未定义,则由 TEMP 环境变量的值指定。