当使用gdb附加到进程时。表明
无法附加到进程。如果您的 uid 与目标进程的 uid 匹配,请检查 /proc/sys/kernel/yama/ptrace_scope 的设置,或以 root 用户身份重试。有关更多详细信息,请参见 /etc/sysctl.d/10-ptrace.conf
ptrace:不允许操作。
作为 root,我使用echo 0 >/proc/sys/kernel/yama/ptrace_scope
;然后它显示:
bash: /proc/sys/kernel/yama/ptrace_scope:只读文件系统
我该如何解决这个问题?的内容/etc/sysctl.d/10-ptrace.conf
是kernel.yama.ptrace_scope = 0
答案1
在 docker 中,您现在可以使用该--privileged
选项,请参阅https://docs.docker.com/engine/reference/commandline/exec/
docker exec --privileged -ti <container> bash
在特权模式下,gdb 无需对 ptrace_scope 进行任何修改即可运行。
答案2
要使用更细粒度的方法,cap_add
也可以使用。对我有用的标志是SYS_PTRACE
.这适用于 CLI 和 docker-compose 文件。对于 swarm,您至少需要有 Docker 20.10.0