【问题标题】:gdb in docker container returns "ptrace: Operation not permitted."docker 容器中的 gdb 返回“ptrace:不允许操作”。
【发布时间】:2017-06-21 03:42:41
【问题描述】:

我在容器和主机上检查了/proc/sys/kernel/yama/ptrace_scope - 两者都报告值为零,但当附加到 pid 时,一个 gdb 报告

Reading symbols from /opt/my-web-proxy/bin/my-web-proxy...done.
Attaching to program: /opt/my-web-proxy/bin/my-web-proxy, process 1
ptrace: Operation not permitted.

我也尝试过使用特权标志附加到容器

docker exec --privileged -it mywebproxy_my-proxy_1 /bin/bash

主机操作系统是 Fedora 25,带有来自其 repos 的 docker,容器是官方的 centos6.8

【问题讨论】:

标签: c++ docker centos gdb fedora


【解决方案1】:

我找到了答案——容器需要以 strace 功能启动

将它添加到我的 docker-compose.yml 文件允许 GDB 工作

cap_add:
    - SYS_PTRACE

或者也可以在docker命令行上用--cap-add=SYS_PTRACE传递

【讨论】:

  • 这在尝试使用 jmap 或 jvisualvm 为 java 程序进行堆转储并获得 sun.jvm.hotspot.debugger.DebuggerException: Can't attach to the process: ptrace(PTRACE_ATTACH, ..) failed for 1: Operation not permitted 作为错误时也相关
猜你喜欢
  • 1970-01-01
  • 2017-05-01
  • 2013-10-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多