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

inf*_*aio 10 java ubuntu jmap

当我使用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    
Run Code Online (Sandbox Code Playgroud)

操作系统:Ubuntu 14.04

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

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

hak*_*ish 18

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

  • 足够有趣的东西:Beeing`root`对我没有帮助。我使用了sudo -u THE__USER_RUNNING_THE_JVM ...,然后就可以了。 (2认同)

Aja*_*ary 12

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

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

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

jstack -l 1234  > /home/users/a/thread-dump.txt
Run Code Online (Sandbox Code Playgroud)

也许它可以帮助某人:)


eeb*_*sen 5

如果您尝试附加到不合格的进程,也会发生这种情况,因此最好重新确认您的 pid。

例如,我的一个朋友在尝试附加到jps他们用来搜索符合条件的 pid的进程时得到了这个;)。