You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Docker中通过GoLand启动dlv debug报错求助

解决Docker容器中dlv debug启动报错:fork/exec function not implemented

核心解决方案

启动Docker容器时必须添加--cap-add=SYS_PTRACE参数,同时指定宽松的seccomp配置:

docker run -it --cap-add=SYS_PTRACE --security-opt seccomp=unconfined [你的容器其他参数]

问题原因

Delve调试器依赖ptrace系统调用实现进程跟踪,而Docker默认的seccomp安全配置会限制该调用,导致dlv无法完成fork/exec目标进程的操作——直接运行程序不需要ptrace权限,所以单独执行exec ./bin/demo -- s可以正常运行,但调试时必须具备该权限。

验证步骤

  1. 停止当前运行的容器,用上述带权限参数的命令重新启动容器
  2. 重新构建调试版本的程序:
go build -gcflags="all=-N -l" -o bin/demo ./demo.go
  1. 再次执行dlv启动命令:
dlv --listen=:40000 --headless=true --api-version=2 --accept-multiclient exec ./bin/demo -- s

额外排查点

  • 确保dlv是在容器内部编译安装的,避免宿主机与容器的架构/环境不兼容
  • 检查目标程序的可执行权限,执行chmod +x ./bin/demo确保权限正确

内容的提问来源于stack exchange,提问作者Michael

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 11:20:39