跳到主要内容

VSCode调试配置

如何用调试运行任意命令

原文:https://stackoverflow.com/a/75957773

launch.json
{
"version": "0.2.0",
"configurations": [
{
"type": "node-terminal",
"request": "launch",
"name": "<name>", // e.g. "前端"
"cwd": "${workspaceFolder}",
"command": "<command>" // e.g. "pnpm dev"
},
]
}

Golang调试无法命中断点

原文:https://cloud.tencent.com/developer/article/2345677

在VSCode中连接远程服务器(如DevBox)调试Golang程序时,无法命中断点。

launch.json 如下所示:

launch.json
{
"version": "0.2.0",
"configurations": [
{
"name": "backend",
"type": "go",
"request": "launch",
"mode": "debug",
"cwd": "${workspaceFolder}/backend",
"program": "${workspaceFolder}/backend",
},
]
}

其中 ${workspaceFolder} 的值为 /home/ddi/projects/go1, 而 /home/ddi/projects 为一个软链接到 /data/projects 目录, /home/ddisda1/datasdb1

根本原因

dlv将软链接文件装载为指向的物理文件,VSCode传入的是软链接路径, 二者路径不一致,dlv装载的内容不包含软链接路径。

解决方法

方法一:添加路径映射

launch.json中添加路径替换配置:

launch.json
{
"version": "0.2.0",
"configurations": [
{
"name": "backend",
"type": "go",
"request": "launch",
"mode": "debug",
"cwd": "${workspaceFolder}/backend",
"program": "${workspaceFolder}/backend",
"substitutePath": [
{
"from": "/home/ddi/projects",
"to": "/data/projects"
}
]
},
]
}

方法二:使用物理路径

在VSCode中打开的路径使用物理路径/data/projects/go1而非软链接路径/home/ddi/projects/go1