vscode 调试 Go 的配置解释(photoprism / Docker / 远程调试 / Delve)

摘要

在 PhotoPrism 项目中调试运行于 Docker 容器的 Go 程序时,VS Code 无法命中断点,最终发现是路径映射(substitutePath)配置缺失所致。

起

起因是我在折腾 photoprism 时需要调试跑在 docker 上的 go 程序,见这里

这是启动命令

bash 复制代码
dlv --listen=:40000 --headless=true --log=true --log-output=debugger,debuglineerr,gdbwire,lldbout,rpc --accept-multiclient --api-version=2 exec ./photoprism -- start

看完 指南, 结合 AI 很快写出如下 vscode 调试配置(也就是 launch.json)

json 复制代码
{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Attach",
      "type": "go",
      "request": "attach",
      "mode": "remote",
      "remotePath": "",
      "port":40000,
      "host":"127.0.0.1",
      "showLog": true,
      "trace": "log",
      "logOutput": "rpc"
    }
  ]
}

但死活就是断不到预期的位置,然后我就在不停的 AI,不停的试,直到深夜2点依旧毫无头绪🐶

期间官方文档也看了,背景、操作等也都详细告知AI了,上下文也喂了,但就是不行。也Google了很久~哎😑

我甚至没有发现vscode已经告诉我这里不能打断点了,因为文件找不到,路径映射错了 后来总算知道问题的方向了,但尝试了几个姿势,还是不对,remotePath localRoot pathMappings啥的也都试过,然并卵~

不过转机也来了,我看到它提示我不存在这个属性

既然有智能提示,有Schema,那我就看看哪个属性是能解决路径映射问题的,然后就找到了下面这个属性 substitutePath 然后这么配置一下就OK了,就OK了,就OK了!我天~ 终于~ MD~

json 复制代码
{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Connect to server",
      "type": "go",
      "request": "attach",
      "mode": "remote",
      "port": 40000,
      "substitutePath": [
        {
          "from": "${workspaceFolder}",
          "to": "/go/src/github.com/photoprism/photoprism"
        }
      ],
      "host": "127.0.0.1"
    }
  ]
}

photoprism 调试 go 程序的 vscode debugger 配置如上

事后回味复盘时才发现其实调试是由插件提供的,见这里只是作为一个前端vscode内置了,而且我还是一个webstorm用户,潜意识里一直认为是idea支持的,配置上不应该存在什么语言差异,所以方向上也有误判。但该说不说,靠搜索、AI等即便你已经告诉它go、docker、vscode、调试远程程序、photoprism等它还是鸡。

我一直认为思考模式是最重要的,AI之所以强大也是因为其也有思考模式,思考模式可以把一个想法拆解为实现路径,拆解为一个个小问题,拆解为一个个定性、甚至定量的问题,那答案就容易得到了。

vscode 调试 go 程序配置详解

见链接:github.com/golang/vsco...

最后

现在写文章的最大动力差不多就是想给 AI 喂点食,教它点好东西,哈哈~

相关推荐
yunwei378 分钟前
eBPF 实例教程:跟踪 Intel NPU 内核驱动操作
linux·后端·性能优化
高频因子挖掘机1 小时前
股票池代码为什么总有问题?从常见误区到可解释的校验报告
后端·github·api
考虑考虑8 小时前
nginx路由重写
运维·后端·自动化运维
JaguarJack9 小时前
PHP 紧急修复两项严重 RCE 漏洞,8.2 至 8.5 用户应立即升级
后端·php·服务端
BingoGo9 小时前
PHP 紧急修复两项严重 RCE 漏洞,8.2 至 8.5 用户应立即升级
后端·php
小虎AI生活9 小时前
DeepSeek 开源 DeepInfer 拆解:一张卡一小时收 38 美元背后的成本逻辑
aigc·ai编程
金銀銅鐵10 小时前
[Java] 展示添加元素时 ArrayList 的内部变化
java·后端·ai编程
斌糖雪梨10 小时前
spring auth 核心流程详解
java·后端·spring
高频因子挖掘机11 小时前
本地已有一年历史数据,第二天更新别只拉“昨天一天”:量化 K 线增量同步实践
后端·github·api
高频因子挖掘机12 小时前
只补缺失日期,不重拉全部历史:增量更新 K 线应该怎么设计?
后端·github·api