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

MacBook Pro M2上用Docker+Delve调试Go HelloWorld API(Goland)

解决Docker容器中Go应用Delve调试连接断开问题

针对你在MacBook Pro M2上遇到的Goland远程调试Docker中Go应用时提示“Debugger disconnected unexpectedly”的问题,以下是排查和解决步骤:

1. 确认基础连通性

  • 检查本地端口连通性:在终端执行nc -zv localhost 40000,返回succeeded!说明端口映射正常;若连接失败,换用未被占用的端口(比如40001)重新测试。
  • 查看容器日志:执行docker-compose logs app,确认Delve是否输出Server listening at :40000这类监听成功的提示,同时排查启动阶段是否有报错。

2. 调整Delve启动参数

当前使用dlv exec启动调试,可尝试切换到dlv debug模式(直接编译并启动调试,兼容性更稳定),同时暂时移除--continue参数让程序等待调试连接:
修改Dockerfile的CMD为:

CMD ["dlv", "debug", "--listen=:40000", "--headless=true", "--api-version=2", "--accept-multiclient", "--log", "--log-output=debug", "--"]

若坚持使用dlv exec,则去掉--continue:

CMD ["dlv", "exec", "./main", "--listen=:40000", "--headless=true", "--api-version=2", "--accept-multiclient", "--log", "--log-output=debug"]

修改后重新构建启动:docker-compose up --build -d

3. 检查Goland调试配置

  • 打开Go Remote配置,确保Debugger architecture选择arm64(与M2芯片、容器镜像架构保持一致)。
  • 确认配置的Host为localhost、Port为40000,无需额外设置路径映射(代码已在容器内编译)。
  • 升级Goland到最新版本,避免旧版本对arm64架构的调试兼容性问题。

4. 排查M2芯片相关的架构兼容性

你的Dockerfile已指定--platform=linux/arm64,这是正确的,但仍需验证:

  • 进入容器docker-compose exec app bash,执行dlv version,查看输出中的Architecture是否为arm64。
  • 若Delve版本较旧,在Dockerfile中指定最新版本重新安装:RUN go install github.com/go-delve/delve/cmd/dlv@v1.22.1

5. 确认代码编译参数

你已添加-gcflags="all=-N -l"关闭编译优化和内联,这是调试的必要设置,请保留该参数,否则断点可能无法正常命中。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 14:47:11