Error attaching to process sun.jvm.hotspot.debugger.DebuggerException cannot open binary file?

问题描述

使用 jinfo jmap 查看java进程时候出现以下错误:

出错描述:使用jinfo查看jvm参数时候报错 Error attaching to process sun.jvm.hotspot.debugger.DebuggerException cannot open binary file

出错原因Linux系统加入了 ptrace-scope 机制,防止用户访问正在执行的进程的内存,而 jinfo,jmap 这些调试类工具本身就是利用 ptrace 来获取执行进程的内存等信息。

问题处理

查看内核参数

sysctl -n kernel.yama.ptrace_scope

kernel.yama.ptrace_scope 两种取值:

  • 1:表示禁止用户访问正在执行的进程的内存
  • 0:表示可以访问

那么解决办法就是修改这个参数值,将其改为可以访问内存,即 0 即可

1、解决办法一

直接修改:

sysctl -w kernel.yama.ptrace_scope=0

修改完再次查看即可,再次使用jinfo 就不会出现问题,完美解决

2、解决办法二

输入值到ptrace_scope文件中

echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope

tee:标准输出流输出到文件,意思是将0这个值输出到ptrace_scope这个文件

再次输入,即解决问题

注意:

如果以上两种方法都不能够解决你的问题,就需要查看 当前系统的java版本与你应用启动的 java版本是否一致,应该jinfo这种都是以系统的环境变量配置的java来执行的,如果你的应用版本不一致,那么肯定是获取不到的

java -version # 查看系统java版本信息

更多推荐

Error attaching to process sun.jvm.hotspot.debugger.DebuggerException cannot ope