附加到进程时出错:sun.jvm.hotspot.debugger.DebuggerException: 无法打开二进制文件

2022-09-01 20:09:16

当我使用jmap获取有关进程的堆信息时,我得到了这样的错误:

$jmap -heap process_id

Attaching to process ID process_id, please wait...
Error attaching to process: sun.jvm.hotspot.debugger.DebuggerException: cannot open binary
file
sun.jvm.hotspot.debugger.DebuggerException: sun.jvm.hotspot.debugger.DebuggerException:
cannot open binary file    

操作系统: Ubuntu 14.04

我已通过更新解决了另一个错误()。DebuggerException: Can't attach to the processkernel.yama.ptrace_scope = 0

请参见: https://bugs.openjdk.java.net/browse/JDK-7050524


答案 1

我遇到了同样的问题,但是当我找到具有相关权限的正确用户时,问题就消失了。su


答案 2

与所提问题没有直接关系。但是,在获取java进程的线程转储时使用jstack命令时,我遇到了类似的错误。假设我想要线程转储的java进程的pid是1234。

我用过这个命令jstack -l 1234 /home/users/a/thread-dump.txt

我在上面的命令中遗漏的是重定向运算符(>)。该命令的正确版本是

jstack -l 1234  > /home/users/a/thread-dump.txt

也许它可以帮助某人:)