[解决方案]Error attaching to core file: cannot open binary file

5 篇文章 1 订阅

解决方案

出现原因

面试官:线上java程序cpu一直满载运行你是怎么排查的
我: 吧啦吧啦。。。。线上日志查看
面试官:好,谢谢你参加我们公司的面试。

。。。有被难受到,楼主目前所在公司业务模块上线运营3年多了,线上出现的问题都能排查解决到,但cpu过高确实没碰到过,回来补习。

再来一次什么叫一波三折。(尤其是上面这个问题)

出错命令在这里

我猜你也是这样的命令(如果不是也没关系 可以试着看完)

 jstack 9302 -> test_webtest_log.txt

[root@rd001 ~]# jstack 9302 -> test_webtest_log.txt
Error attaching to core file: cannot open binary file
sun.jvm.hotspot.debugger.DebuggerException: cannot open binary file
	at sun.jvm.hotspot.debugger.linux.LinuxDebuggerLocal.attach0(Native Method)
	at sun.jvm.hotspot.debugger.linux.LinuxDebuggerLocal.attach(LinuxDebuggerLocal.java:286)
	at sun.jvm.hotspot.HotSpotAgent.attachDebugger(HotSpotAgent.java:673)
	at sun.jvm.hotspot.HotSpotAgent.setupDebuggerLinux(HotSpotAgent.java:611)
	at sun.jvm.hotspot.HotSpotAgent.setupDebugger(HotSpotAgent.java:337)
	at sun.jvm.hotspot.HotSpotAgent.go(HotSpotAgent.java:304)
	at sun.jvm.hotspot.HotSpotAgent.attach(HotSpotAgent.java:156)
	at sun.jvm.hotspot.tools.Tool.start(Tool.java:191)
	at sun.jvm.hotspot.tools.Tool.execute(Tool.java:118)
	at sun.jvm.hotspot.tools.JStack.main(JStack.java:92)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at sun.tools.jstack.JStack.runJStackTool(JStack.java:140)
	at sun.tools.jstack.JStack.main(JStack.java:106)

解决方案在这里

 jstack 9302 

该命令会将当前java进程的线程运行日志直接打印在控制台上
我们可以先打印在控制台 在复制出来。
虽然有点笨 但目前看只能这样 ,楼主查阅了很多资料

有关一个外网的解决方案

解决方案提供的链接
在这里插入图片描述
楼主直接升级到了jdk11版本,接下来看效果
请添加图片描述

还是不太行。又反复尝试解决了好久。终于。。。。。。出来了
在java9及以上版本中通过该命令可以做到将日志输出到本地文件中
PS:java8中无jhsdb命令

jhsdb jstack --pid 3041 -> test_bbbbbb.log

总结

  1. 直接输出到控制台,复制出来查看
  2. 升级jdk版本为9或者9以上通过jhsdb命令输出到文件里面

延伸(java程序内存泄漏怎么排查)

java程序内存泄漏怎么排查

希望本文可以帮到你。

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值