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

Windows VSCode远程调试VirtualBox中Go应用遇dlv连接关闭问题

解决VSCode远程调试VirtualBox内Go应用的连接关闭问题

核心排查方向(基于CLI可连接的前提)

既然dlv cli能成功连接,说明VirtualBox端口转发、Linux端dlv服务启动都正常,问题集中在VSCode的launch.json配置细节上。

1. 修正launch.json的关键配置项

以下是经过验证的正确配置模板,对照你的配置修改:

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Remote Debug Linux Go",
            "type": "go",
            "request": "attach",
            "mode": "remote",
            "remotePath": "/home/你的用户名/go项目的绝对路径", // 必须和Linux端项目路径完全一致
            "port": 2345, // 和VirtualBox转发的端口、dlv启动的端口一致
            "host": "127.0.0.1", // Windows本地回环,对应端口转发到本地
            "apiVersion": 2, // 关键:指定dlv API版本,避免兼容性问题
            "showLog": true // 开启日志便于排查后续问题
        }
    ]
}

2. 常见错误点排查

  • remotePath必须完全匹配:Linux端Go项目的绝对路径要一字不差,不能用~/xxx或相对路径,比如Linux端项目在/home/user/demo-go,这里就必须写完整路径。
  • apiVersion缺失:旧版VSCode Go插件默认不指定API版本,和高版本dlv存在兼容性问题,手动添加"apiVersion": 2即可。
  • 端口冲突:确认Windows本地2345端口未被占用,可通过命令检查:
    netstat -ano | findstr :2345
    
  • dlv启动参数正确:Linux端启动dlv时必须带--headless、--listen参数,且允许外部连接,正确命令示例:
    # 调试源码
    dlv debug --headless --listen=:2345 --api-version=2 --accept-multiclient
    # 调试已编译二进制
    dlv exec ./your-app --headless --listen=:2345 --api-version=2 --accept-multiclient
    

3. 验证VSCode插件版本

确保VSCode的Go插件为最新版本,旧版本可能存在远程调试的兼容性bug,在扩展市场搜索Go并点击更新。

4. 检查Linux端防火墙

Linux端防火墙要允许2345端口的入站连接,可临时关闭测试:

sudo iptables -F
sudo systemctl stop firewalld

如果测试有效,再永久开放端口:

sudo firewall-cmd --add-port=2345/tcp --permanent
sudo firewall-cmd --reload

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 11:29:57