调试Go程序时VSCode错误的路径

Sha*_*bob 6 debugging go visual-studio-code

我的 main.go 在一个子文件夹中,cmd/admin/main.go但是当我调试并且文件中有错误时,它为我提供了 main.go 文件夹而不是工作区文件夹的相对路径。因此,例如..\..\path\to\file.go:238:3: undefined: test,如果我尝试按 Ctrl+单击它,我将遇到无法工作的错误。
如果我从根目录启动命令,该命令go run cmd/admin/main.go按预期返回path\to\file.go:238:3: undefined: test.

我的launch.json:

{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Launch",
      "type": "go",
      "request": "launch",
      "mode": "auto",
      "cwd": "${workspaceFolder}",
      "program": "${workspaceFolder}/cmd/admin",
      "env": {},
      "args": []
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

Go 版本 1.16.6
VSC 版本 1.58.2
操作系统 Windows10

Jac*_*ton 9

转到文件 > 将文件夹添加到工作区然后选择包含 main.go 的文件夹 在此输入图像描述 您也可以在命令行中执行此操作:

code cmd/admin -a
Run Code Online (Sandbox Code Playgroud)

现在确保您当前的 launch.json 已被删除以重新开始,您的工作区应如下所示:

在此输入图像描述

请注意,有一个“package main”和“func main()”,这是 Go 知道入口点所必需的。

现在按“运行”并使用断点进行调试:

在此输入图像描述

就是这样,它现在应该适用于您添加到工作区的任何文件夹。如果您需要更具体的调试选项,请将它们添加到您的工作区,它们将应用于您运行的文件的上下文中。单击“创建 launch.json 文件:

在此输入图像描述

选择工作区:

在此输入图像描述

选择开始:启动包

在此输入图像描述

您现在拥有一个启动配置,该配置将应用于您运行它的目录:

在此输入图像描述

确保保存您的工作区以保留它:

在此输入图像描述

笔记

  • 如果当前的 launch.json 文件已存在于任何地方,请务必将其删除。

  • 确保所有源代码都位于 GOPATH/src 中,您可以通过将其放入命令行来找出 GOPATH 的位置:

go env GOPATH
Run Code Online (Sandbox Code Playgroud)

更多信息

VS Code 工作区调试: https://code.visualstudio.com/docs/editor/multi-root-workspaces#_debugging

GOPATH: https: //golang.org/doc/gopath_code


Von*_*onC 1

尝试并确保:

然后查看问题是否仍然存在(并且cwd您的 中不需要launch.json