java crash 日志分析_java相关:jvm crash的崩溃日志详细分析及注意点

java相关:jvm crash的崩溃日志详细分析及注意点

发布于 2021-1-7|

复制链接

本篇文章主要介绍了jvm crash的崩溃日志详细分析及注意点。具有很好的参考价值,下面跟着小妖一起来看下吧

生成1. 生成error 文件的路径:你可以通过参数设置-XX:ErrorFile=/path/hs_error%p.log, 默认是在Java运行的当前目录 [default: ./hs_err_pid%p.log]2. 参数-XX:OnError  可以在crash退出的时候执行命令,格式是-XX:OnError=“string”,  可以是命令的集合,用分号做分隔符, 可以用"%p"来取到当前进程的ID.例如:

```xml

// -XX:OnError="pmap %p" // show memory map

// -XX:OnError="gcore %p; dbx - %p" // dump core and launch debugger

```

在Linux中系统会fork出一个子进程去执行shell的命令,因为是用fork可能会内存不够的情况,注意修改你的 /proc/sys/vm/overcommit_memory 参数,不清楚为什么这里不使用vfork3. -XX:+ShowMessageBoxOnError 参数,当jvm crash的时候在linux里会启动gdb 去分析和调式,适合在测试环境中使用。什么情况下不会生成error文件linux 内核在发生OOM的时候会强制kill一些进程, 可以在/var/logs/messages中查找Error crash 文件的几个重要部分a.  错误信息概要

```java

# A fatal error has been detected by the Java Runtime Environment:

#

# SIGSEGV (0xb) at pc=0x0000000000043566, pid=32046, tid=1121192256

#

# JRE version: 6.0_17-b04

# Java VM: Java HotSpot(TM) 64-Bit Server VM (14.3-b01 mixed mode linux-amd64 )

# Problematic frame:

# C 0x0000000000043566

#

# If you would like to submit a bug report, please visit:

# http://java.sun.com/webapps/bugreport/crash.jsp

# The crash happened outside the Java Virtual Machine in native code.

# See problematic frame for where to report the bug.

```

SIGSEGV 错误的信号类型pc 就是IP/PC寄存器值也就是执行指令的代码地址pid 就是进程id# Problematic frame:

# V  [libjvm.so+0x593045]就是导致问题的动态链接库函数的地址pc 和 +0x593045 指的是同一个地址,只是一个是动态的偏移地址,一个是运行的虚拟地址b.信号信息Java中在linux 中注册的信号处理函数,中间有2个参数info, ucvoid

```java

st

你可能感兴趣的:(java,crash,日志分析)