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

如何通过Python调用Go应用并在VSCode中同时调试两者?

实现Python脚本与Go CLI应用的联合调试

可以实现同时调试Python脚本和它启动的Go应用,按以下步骤操作:

1. 添加Go的Attach调试配置

你当前看到的配置里没有attach选项,是因为没手动添加。直接在.vscode/launch.json中补充Go的远程附加配置:

{
  "name": "Attach to Go CLI",
  "type": "go",
  "request": "attach",
  "mode": "remote",
  "port": 2345,
  "host": "127.0.0.1"
}

2. 修改Python脚本,让Go应用以调试模式启动

在Python的subprocess.Popen调用中,不能直接启动Go二进制,要通过Delve调试器(dlv)启动并开启调试端口,等待VSCode的调试器附加。修改后的代码示例:

import subprocess
import time
import os

# 替换成你的Go二进制路径和启动参数
go_binary_path = "./your-go-cli-app"
go_args = ["--your-cli-arg", "value"]

# 用dlv启动Go应用,开启调试端口2345
debug_cmd = [
    "dlv", "exec", go_binary_path,
    "--listen=:2345", "--headless=true", "--api-version=2",
    "--"
] + go_args

# 启动Go调试进程
go_process = subprocess.Popen(debug_cmd, env=os.environ.copy())

# 等待2秒让调试服务初始化完成
time.sleep(2)

# 继续执行Python脚本的后续逻辑
# ...

3. 配置复合调试实现一键启动

为了不用手动先后启动两个调试会话,在launch.json中添加复合调试配置,实现一键启动Python调试并自动附加Go调试器:

{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Python API",
      "type": "python",
      "request": "launch",
      "program": "foo.py",
      "justMyCode": true,
    },
    {
      "name": "Attach to Go CLI",
      "type": "go",
      "request": "attach",
      "mode": "remote",
      "port": 2345,
      "host": "127.0.0.1"
    }
  ],
  "compounds": [
    {
      "name": "Python + Go联合调试",
      "configurations": ["Python API", "Attach to Go CLI"],
      "stopAll": true
    }
  ]
}

前置准备

  • 确保已安装Delve调试器:执行go install github.com/go-delve/delve/cmd/dlv@latest
  • 如果是自行编译Go二进制,需带调试信息:go build -gcflags="all=-N -l"(禁用优化和内联,方便调试)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 11:10:42