Java core dump
生成Java core dump
可以按照下面这个文章的指引来通过jni调用触发Java core dump
基本思路是通过Java调用本地C代码,然后在C代码中触发一个错误,从而引发jvm
crash。
需要注意两个问题
- gcc编译的时候需要注意库的名称,例子里面是
libnativelib.so,需要改为libnativelib.jnilib
$ gcc -fPIC -o libnativelib.jnilib -shared \
-I$JAVA_HOME/include/linux/ \
-I$JAVA_HOME/include/ \
CoreDumper.c
- 例子中的命令是基于linux的,如果在mac下jni_md.h头文件的位置和linux稍有不同,在用gcc编译的时候要注意下,需要把jni_md.h文件复制到对应的目录
sudo cp $JAVA_HOME/Contents/Home/include/darwin/jni_md.h $JAVA_HOME/Contents/Home/include
- java.lang.UnsatisfiedLinkError: no XXX in java.library.path
在执行java mainClass的时候可能会报这个错误,因为java执行mainClass的时候mainClass需要带有package名称,要看下生成的libnativelib.jnilib在那一个目录,使用-Djava.library.path指向libnativelib.jnilib的路径
经过上面一顿操作之后,就可以看到执行java目录下面有一个hs_err_pidxxx.log文件,在对应的目录下还有core dump文件,mac下的core dump目录是
/cores
不过有可能并没有生成core dump,只有hs_err_pidxxx.log文件,我们看下hs_err_pidxxx.log文件,其中有一行
# Failed to write core dump. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again
根据提示core dump失败了,可以通过设置ulimit -c unlimited再重新试下,就可以在/cores目录下找到类似core.xxx的文件。
因为mac下会限制进程对资源的限制,-c表示core文件的最大值,单位为区块,ulimit -c unlimited设置为无限制。注意在当前shell中执行只会对当前shell生效。
core dump分析
hs_err_pidxxx.log是一个文本日志文件,可以直接查看。core dump文件可以通过gdb、jmap、jstack来分析,具体可以参考Analysing a Java Core Dump
参考
JVM Crashes的常见原因:Staying on Top of JVM Crashes
gcc编译找不到jni_md.h:Mac下Java JNI 调C
java.lang.UnsatisfiedLinkError: no XXX in java.library.path
Java core dump的更多相关文章
- 记一次Java Core Dump分析过程
#背景提要 很久没有亲自动手部署代码了,命令行的亲切感越来越低.放飞了键盘,习惯了鼠标操作的windows环境.冷不丁实操部署也是不错的. 常常在部署时,运维同学对于[hs_err_pid]文件视而不 ...
- 认识Java Core和Heap Dump
什么是Java Core和Heap Dump Java程序运行时,有时会产生Java Core及Heap Dump文件,它一般发生于Java程序遇到致命问题的情况下. 发生致命问题后,Java进程有时 ...
- JVM 崩溃 Failed to write core dump解决办法 WINDOWS
JVM 崩溃 Failed to write core dump解决办法 WINDOWS MIT key words: JVM,崩溃,windows,Failed,core dump,虚拟内存 最近从 ...
- Java Core和HeapDump
什么是Java Core和Heap Dump Java程序运行时,有时会产生Java Core及Heap Dump文件,它一般发生于Java程序遇到致命问题的情况下. 发生致命问题后,Java进程有时 ...
- Failed to write core dump. Minidumps are not enabled by default on client versions of Windows
使用JProfiler监控JAVA程序内存,JVM报错: A fatal error has been detected by the Java Runtime Environment: EXCEPT ...
- 三个实例演示 Java Thread Dump 日志分析
原文地址: http://www.cnblogs.com/zhengyun_ustc/archive/2013/01/06/dumpanalysis.html jstack Dump 日志文件中的线程 ...
- 三个实例演示 Java Thread Dump 日志分析(转)
原文链接:http://www.cnblogs.com/zhengyun_ustc/archive/2013/01/06/dumpanalysis.html 转来当笔记^_^ jstack Dump ...
- Java Thread dump 日志分析
jstack Dump 日志文件中的线程状态 dump 文件里,值得关注的线程状态有: 死锁,Deadlock(重点关注) 执行中,Runnable 等待资源,Waiting on conditio ...
- 使用GDB 追踪依赖poco的so程序,core dump文件分析.
前言 在windows 下 系统核心态程序蓝屏,会产生dump文件. 用户级程序在设置后,程序崩溃也会产生dump文件.以方便开发者用windbg进行分析. so,linux 系统也有一套这样的东东- ...
随机推荐
- Unity NavMesh 格式 解析 分析 对比 Recast Navigation
工具软件 Excel Nodepad++ Sublime Unity 5.4 / 5.6 VS RecastDemo CodeBlocks 分析过程以Unity项目-Demo13为例 一. 创建测试模 ...
- MVC框架+vue+elementUI
用自动化构建做的vue项目,因为是动态加载数据,在SEO优化时一直不如意,于是我们换了框架,用MVC框架,做成静态页面,但是原来的代码都是用vue和elementUI,为了快速的复用原来的代码,于是在 ...
- K2 BPM_当BPM遇上RPA | 企业合规和风险管理从此更高效_全球领先的工作流引擎
强化企业合规与风险管理已成为全球企业发展的共识,尤其是对于药企.银行.地产这类对于合规性要求高的企业而言,识别预测潜在的管理风险和遵循不断升级的合规义务,是保证企业平稳运行的关键. 如何从流程层面降低 ...
- Go 信道Channel
信道(Channel) 信道(Channel)可以被认为是协程之间通信的管道.数据可以从信道的一端发送并在另一端接收. 默认为同步模式,需要发送和接收配对.否则会被阻塞,直到另外的信道准备好后被唤醒. ...
- 6.Java集合-LinkedList实现原理及源码分析
Java中LinkedList的部分源码(本文针对1.7的源码) LinkedList的基本结构 jdk1.7之后,node节点取代了 entry ,带来的变化是,将1.6中的环形结构优化为了直线型链 ...
- CSS基础 布局
1.布局的基本位置 top 距离上边的距离right 距离右边的距离bottom 距离下边的距离left 距离左边的距离 去掉布局时 html 的3mm ...
- MySQL数据库---数据库管理
-- 创建用户,指定明文密码create user 'rose'@'localhost' identified by 'rosepwd'; -- 查看用户是否创建成功select user,host ...
- Tensorflow ARM交叉编译错误集锦
版权声明:本文为博主(Jimchen)原创文章,未经博主允许不得转载. ttps://www.cnblogs.com/jimchen1218/p/11611975.html 前言: Tensorflo ...
- python-----批量操作xml文件(新建、增、删、改、查)
最近需要处理xml文件,学习并整理了一些常用的操作,代码如下: #!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2019/7/9 15: ...
- 利用CodeBlocks结合freeglut快速搭建OpenGL开发环境
利用CodeBlocks结合freeglut快速搭建OpenGL开发环境 2018-12-19 10:15:48 再次超越梦想 阅读数 180更多 分类专栏: 我的开发日记 版权声明:本文为博主原 ...