docker容器中的gdb返回ptrace Operation not permitted
docker容器中的gdb返回”ptrace: Operation not permitted.”
原因
原因是Ubuntu 16.04 的/etc/sysctl.d/10-ptrace.conf文件中最后一行默认
kernel.yama.ptrace_scope = 1
这个值不允许用户使用普通账户使用attach ID连接程序进行调试,需要使用超级用户权限才能连接。
解决办法
方法一
可以把kernel.yama.ptrace_scope的值改为 0,即
sudo vim /etc/sysctl.d/10-ptrace.conf
将最后一行改为 kernel.yama.ptrace_scope = 0,保存退出。
重启系统后,普通用户就可以使用attach ID连接程序调试了。
方法二
把特权标志连接到容器上
1 | docker exec --privileged -it mywebproxy_my-proxy_1 /bin/bash |
方法三
容器需要使用strace功能启动
将此文件添加到我的docker-compose.yml文件允许GDB工作
1 | cap_add: |
也可以在docker命令行上使用--cap-add=SYS_PTRACE
传递
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Daily Study!