【问题标题】:Running Golang in Visual Studio Code在 Visual Studio Code 中运行 Golang
【发布时间】:2016-10-31 00:15:43
【问题描述】:

谁能告诉我如何在 Visual Studio 中逐步运行和使用调试器在 Windows 中运行一个简单的 go 程序?

我从这个页面获取了一个参考:

https://marketplace.visualstudio.com/items?itemName=lukehoban.Go

但我无法运行代码。我当前的 GOPATH 是 C:\dev\go。 如果需要任何其他详细信息,请告诉我。

【问题讨论】:

  • 编译器(调试器)抱怨什么?
  • 我们需要知道该指南中的哪个步骤失败以及如何失败,或者您无法执行的任何步骤。现在您要求我们编写另一个教程,如果我们这样做了,它可能仍然不适合您。
  • 这是我启动调试器时得到的结果:无法加载包:包。:在 c:\dev\go 退出状态 1 中没有可构建的 Go 源文件

标签: windows debugging go visual-studio-code


【解决方案1】:

首先,调试器不是 Go 的一部分。 Microsoft 堆栈下的 C#、F# 和其他托管语言具有调试器,因为它们是 .NET 堆栈的一部分。

第二,Visual Studio 代码!= Visual Studio。 VS Code 是一个轻量级的 IDE,旨在通过创建运行器来支持多种语言的可扩展性。但这就是问题所在:其他人需要编写运行程序,并希望他们使用调试器(如果可用)创建无缝体验。这就是为什么你有多个版本的语言运行器的原因。

换句话说:如果你想要一个与 VSCode 兼容的 Debugger+Runner for X 语言,请阅读有关如何调试它的 X 语言。

围棋也不例外。 You must read the language spec, and specifically I recommend Effective Go as it explains why you don't need a Debugger.

--

现在说了这么多,社区已经走到了一起,为 GoLang 创建了一个调试器。 It is called Delve.

了解如何为 VS Code 安装它超出了这篇文章的范围。我建议找到一个支持使用 Delve 进行 Go 编码的 VSCode 包(至少有一个,因为我已经使用它了)。

意见:在 VSCode 中调试 Go 是一种不错的体验。我已经尝试过了。虽然视觉上令人愉悦,但我还是回到了 Atom,因为它对许多其他 Go 实用程序和 Linters 的大包支持——其中大部分在 VSCode 中都没有(并且一些包不允许我修改配置以排除某些 Go 工作流)。

EDIT 2018:几年后,VSCode 已经成熟了!我已经 100% 切换到 VSCode 作为我的主要编辑器。

【讨论】:

  • 谢谢伙计。我的错,我忘了用 Visual Studio 写“代码”。我已经安装了 Delve。但是当我开始调试时出现此错误。 can't load package: package .: no buildable Go source files in c:\dev\go exit status 1
  • 再次,在 VS Code 中寻找专门用于调试的包。他们可能会安装其他版本的 delve,或者提供与该软件包兼容的操作说明。
【解决方案2】:

在 Windows 上安装 Debugger for Go 语言的一个可能选项是:

go get github.com/derekparker/delve/cmd/dlv

之后,Visual Studio Code (vscode) 将能够运行(调试)启动配置。

默认情况下,文件launch.json指向项目的根目录:

"program": "${workspaceRoot}"

如果您想将其配置到另一个位置(例如 your/package/foo/dir),请按以下方式进行编辑:

"program": "${workspaceRoot}/foo/dir"

【讨论】:

  • 你的意思是我的go代码所在的位置。我的代码位于 C:\dev\go\src\github.com\golang\game\game.go。我得到的错误是:无法加载包:包。:在 c:\dev\go 退出状态 1 中没有可构建的 Go 源文件
  • @A-kay 请尝试阅读此信息:golang.org/doc/code.html 和此talks.golang.org/2014/organizeio.slide#1。在 vscode 中,“program”中的workspaceRoot:“${workspaceRoot}”表示您当前的项目工作区。
【解决方案3】:

如果您想调试在应用服务器中运行的 Go 模块,您可以查看 debugging golang appengine module with visual studio code

说明适用于 Appengine 服务器,但您可以轻松了解如何使用 Delve 从 vscode 进行远程调试。

【讨论】:

  • 请考虑指出您提供的链接的相关部分作为答案的一部分。最后,仅链接的答案可能没有那么有用。
猜你喜欢
  • 2021-12-15
  • 2019-11-23
  • 2016-06-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-28
  • 1970-01-01
相关资源
最近更新 更多