[top]
### 一 问题
执行jinfo -flags pid报错,错误信息如下:
Attaching to process ID 25985, please wait...
Error attaching to process: sun.jvm.hotspot.debugger.DebuggerException: Can't attach to the process
sun.jvm.hotspot.debugger.DebuggerException: sun.jvm.hotspot.debugger.DebuggerException: Can't attach to the process
****
二 解决方案
执行如下命令可解决:
echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope
再次执行命令如下:
**-OptiPlex-3020:~/桌面$ jinfo -flags 25985
Attaching to process ID 25985, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.45-b02
Non-default VM flags: -XX:CICompilerCount=3 -XX:InitialHeapSize=130023424 -XX:MaxHeapSize=2069889024 -XX:MaxNewSize=689963008 -XX:MinHeapDeltaBytes=524288 -XX:NewSize=42991616 -XX:OldSize=87031808 -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseFastUnorderedTimeStamps -XX:+UseParallelGC
Command line:
三 原因
这是因为新版的Linux系统加入了 ptrace-scope 机制.
这种机制为了防止用户访问当前正在运行的进程的内存和状态, 而一些调试软件本身就是利用 ptrace 来进行获取某进程的内存状态的(包括GDB),所以在新版本的Linux系统, 默认情况下不允许再访问了.
执行上面命令可以解决此问题.
四 配置到文件中
可以配置到文件中,添加或修改为以下这一句:(0:允许, 1:不允许) kernel.yama.ptrace_scope = 0
vim /etc/sysctl.d/10-ptrace.conf
本文介绍了在Linux系统中遇到'Can't attach to the process'错误的问题,提供了一个通过执行特定命令来解决的方案,并解释了该错误产生的原因——新版本Linux系统的安全性增强。此外,还说明了如何将解决方案配置到系统文件中以持久化设置。
1549

被折叠的 条评论
为什么被折叠?



