Linux 查看进程堆栈信息异常的解决方法
Linux 系统中使用 gdb
、strace
、jinfo
、jmap
等方式查看进程堆栈信息时出现 ptrace attach Operation not permitted 不允许的操作这种异常情况。
原因
Linux 通过设置 /proc/sys/kernel/yama/ptrace_scope
中的值为 1 对 ptrace 调试做了限制:
$ cat /proc/sys/kernel/yama/ptrace_scope
1
在这种模式下,通过 CAP_SYS_PTRACE
设置可以允许跟踪进程,另一种简单的方法是修改 ptrace_scope
的值为 0,可以让进程跟踪到任何在相同 uid 用户下运行的进程。
简单解决方法
ptrace_scope
的值在写入之后无法通过 vim
等方式修改,可以通过 sysctl 修改内核参数的值:
$ sudo sysctl kernel.yama.ptrace_scope=0