linux gdb无法附加到进程

dzhpxtsq  于 2022-12-11  发布在  Linux
关注(0)|答案(3)|浏览(235)

下面是我正在使用的操作系统:
Linux securecluster 4.9.8-moby #1 SMP星期三2月8日09:56:43 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
当尝试以root用户身份将gdb附加到挂起进程时,我得到了以下结果:

Attaching to process 9636
Could not attach to process.  If your uid matches the uid of the target
process, check the setting of /proc/sys/kernel/yama/ptrace_scope, or try
again as the root user.  For more details, see /etc/sysctl.d/10-ptrace.conf
ptrace: Operation not permitted.

我修改了/etc/sysctl.d/10-ptrace.conf,结果是:

kernel.yama.ptrace_scope = 0

但是,我得到了同样的错误。我尝试更改/proc/sys/kernel/yama/ptrace_scope:

echo 0 | tee /proc/sys/kernel/yama/ptrace_scope
tee: /proc/sys/kernel/yama/ptrace_scope: Read-only file system

暗示是感激不尽的。

fgw7neuy

fgw7neuy1#

我修改了/etc/sysctl.d/10-ptrace.conf文件,
这只会在下次重新启动时生效。
在那之前,就做sudo sysctl -w kernel.yama.ptrace_scope=0

mkshixfv

mkshixfv2#

是否使用容器引擎?请尝试从容器外部(在主机上)附加到进程;它在那里可能具有不同PID。
或者,启动具有CAP_SYS_PTRACE功能的容器(例如,使用--cap-add=SYS_PTRACE)。当然,如果不能重现挂起,则不能使用此方法。

a7qyws3x

a7qyws3x3#

@Ted @escapecharacter您所引用的内核参数是从主机系统中获取的,这就是为什么它是只读的,您不能从容器内部编辑实际的配置文件。您可以在容器中覆盖它,只需将-w标志拖到#sudo sysctl kernel.yama.ptrace_scope=0即可。一个永久的解决方案是在主机节点上执行此操作,默认情况下,所有容器都将继承此操作。

相关问题