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

使用dlv-dap调试指定processId时远程attach失败问题求助

远程Go进程dlv调试失败排查方案

核心问题定位

你执行的dlv dap命令仅启动了DAP协议服务端,但未关联到目标api-svr进程。当VSCode传递processId=14时,远程dlv没有对应的调试会话绑定该进程,因此抛出Failed to attach: no debugger found错误。

修正步骤

  1. 清理无效dlv进程
    在远程pod中终止之前启动的dlv进程,释放端口:

    pkill dlv
    
  2. 启动关联目标进程的dlv DAP服务
    在远程pod中执行以下命令,直接attach到PID为14的api-svr进程并启动DAP服务:

    dlv attach 14 --listen=:11458 --log --log-output=dap --headless
    
    • --headless:确保dlv以无头模式运行,无需本地终端交互
    • 此命令会直接绑定目标进程,同时通过11458端口暴露DAP协议
  3. 校验VSCode launch.json配置
    确保配置中remotePath指向pod内api-svr二进制的实际路径(dlv需要此路径加载调试符号),示例配置:

    {
        "version": "0.2.0",
        "configurations": [
            {
                "name": "Remote Go Attach",
                "type": "go",
                "request": "attach",
                "mode": "remote",
                "remotePath": "/app/api-svr", // 替换为pod中二进制的真实路径
                "port": 11458,
                "host": "127.0.0.1",
                "processId": 14
            }
        ]
    }
    
  4. 重启VSCode调试会话
    完成上述操作后,重新启动调试,远程dlv将正确关联到目标进程,错误应可解决。

额外排查项

  • 确认api-svr是带调试符号编译:若编译时使用-ldflags="-s -w"移除了符号表,dlv无法attach,需重新编译保留符号
  • 检查进程权限:若api-svr不属于当前用户,需用sudo dlv attach ...启动调试器
  • 验证端口连通性:本地执行nc -zv 127.0.0.1 11458,确认端口转发正常

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 10:10:00