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 系统也有一套这样的东东- ...
随机推荐
- 阿里云 ecs win2016 FileZilla Server
Windows Server 2016 下使用 FileZilla Server 安装搭建 FTP 服务 一.安装 Filezilla Server 下载最新版本的 Filezilla Server ...
- Kinect for Windows SDK开发入门(三):基础知识 下
原文来自:http://www.cnblogs.com/yangecnu/archive/2012/04/02/KinectSDK_Application_Fundamentals_Part2.htm ...
- mybatise 设置全局变量实例
前言 在平时的工作中有时候是需要在配置文件中配置全局变量的,因为这些东西是不会变的,并且每个mapper都传参的话也显得有点繁琐,还好mybatis本身是支持全局变量的,今天工作中用到了,记录一下. ...
- BZOJ 4873 寿司餐厅 网络流
最大权闭合子图 1.每个区间收益(i,j)对应一个点 权值为正连S 负连T 2.每个区间收益向其子区间收益(i+1,j)与(i,j-1)对应的两个点连边 容量为INF 3.每个寿司类型对应一个点 连一 ...
- linux实操_shell位置参数变量
基本语法: 脚本内容: 输出效果:
- c语言1博客作业07
一.本周作业头 这个作业属于那个课程 C语言程序设计II 这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/SE2019-3/homework/9929 我 ...
- GEF中TreeViewer的叶子节点展开
/** * GEF树叶子节点的展开 * @param items */ private void expand(TreeItem[] items) { for (int i = 0; i < i ...
- C# 得到本周的第一天和最后一天
1.得到本周的第一天和最后一天 /// <summary> /// 得到本周第一天(以星期一为第一天) /// </summary> /// <param name=&q ...
- Charles破解注册
Charles破解注册English 本页面会持续更新Charles最新版破解注册方法,建议加入收藏 Charles 4.1.2 下载Charles v4.1.2 并安装 云盘下载: Windows ...
- 用IE滤镜实现多种常用的CSS3效果
CSS3是当下非常火的一个话题之一,很多浏览器都已经开始支持这一特性,然后IE这个拥有庞大用户群体的平台,却无法提供这样的支持,即便是IE9发布,也无法改变这一事实,然而,幸运的是,IE并非在这方面毫 ...