JVM 崩溃.如何获取错误日志或核心转储



我有一个使用 jna 调用本机 dll 的 java 应用程序。在执行我在 java 中的回调并抛出"java 平台 se 二进制已停止"对话框后,程序在中间崩溃了 JVM。Java 控制台日志没有用,那里什么都没有。如何在窗口中获取核心转储或其他一些有用的日志,以找出问题及其原因。在临时文件夹中查找hs_err日志,但找不到它。

自过去几天以来,我们在RHEL平台上运行的JVM(openjdk 8(上一直看到此错误。 我们注意到它在/var/log/message 文件中生成了一些错误消息,该文件写core_dump文件的位置如下。

2020-01-29T03:08:14.980998+00:00 lon6pvlpdgrd103 abrt[2274]:将 pid 40132 (/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.222.b10-0.el6_10.x86_64/jre/bin/java( 的核心转储保存到/var/spool/abrt/ccpp-2020-01-29-03:08:10-40132(1048576000 字节(

我认为它的操作系统级别功能可以在进程异常崩溃时生成核心转储。 此页面有助于进一步了解崩溃的原因:https://docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/crashes001.html 对于窗口,请参阅上面的文章第 17.4.4 节"在 Windows 上收集故障转储"表单。 请检查这是否有帮助。

hs_err文件通常写在JVM进程的"当前目录"中。 如果用户无法写入该目录,则文件将写入临时目录。 您还可以告诉 JVM 将致命错误报告写入指定文件。

仅当"核心文件大小"ulimit(或等效项(足够大且有足够的文件空间时,才会写入核心转储。 默认 ulimit 为零。

欲了解更多信息:

  • 致命错误日志的位置
  • 收集核心转储

使用-XX:ErrorFile指定错误文件。

从致命错误日志的位置:

要指定日志文件的创建位置,请使用产品标志 -XX:ErrorFile=file,其中 file 表示日志文件位置的完整路径。

另外,这个:

如果未指定 -XX:错误文件=file 标志,则默认日志文件名为 hs_err_pid.log,其中 pid 是进程的 PID。

最新更新