如何在GoLand中设置调试?

时间:2017-01-11 14:00:00

标签: debugging go ide goland

我正在尝试GoLand并听说调试器应该很棒,但我找不到任何解释如何设置它的文档(GoLand处于预览阶段,所以这并不奇怪)。我的用例:我正在编写一个REST API,我使用curl向其发送请求。有人可以一步一步地告诉我,如何开始使用调试器?

[编辑1](从注释中移出)当我单击运行/调试(或运行/运行)时,会显示一个窗口,要求我编辑配置。我可以选择几种配置,我尝试选择“Go application”但是Debug按钮永远不会变灰,我无法让它变成可点击的。我是GoLand的新手,我可能会遗漏一些明显的东西,但我找不到任何设置缺失。

[编辑2]事实证明我的工作区不符合Go规范:我的代码不在名为src的目录中。既然是这样的话,我可以单击Run / Debug并且GoLand似乎正在做正确的事情,除了它不会在断点处停止或者表现得像调试器,我的代码才会运行。

[编辑3]再次尝试,它的确有效。有点。我不知道为什么它现在有用,即使它之前没有,我也没有改变任何东西。现在断点在某些方面起作用,而在其他方面起作用。或者调试器在断点处停止,但我会永远等待要加载的变量列表。嗯,毕竟是预览......

[编辑4]我今天刚收到通知,提供了新版本的GoLand。我升级了,现在调试工作正常。

7 个答案:

答案 0 :(得分:10)

如果您的代码不在src内,Gogland将不会启用调试操作(尽管可以运行)。没有关于此的警告,所以解决这个问题可能真的很痛苦。

此外,根据您的项目结构,可能仍然无法进行调试。在这种情况下,删除所有运行配置并创建一个新配置可能会有所帮助。关于此行为有一个bug report

PS:虽然OP提到了问题编辑的第一部分,但它认为在答案中值得一提。

答案 1 :(得分:5)

我遇到了同样的问题,我通过使用“Go Application”配置(在Run / Debug Configurations窗口中)而不是“Go Single File”配置解决了这个问题。

因此,请转到Gogland的右上角和“编辑配置”。

Opening the Run/Debug Configurations

然后,使用“Go Application”配置文件添加新配置。

Run/Debug Configurations window

保存后,您应该能够调试代码。 O /

启用此配置的一种简单方法是使用 @ user1793301 方法并右键单击要运行的文件,然后选择“Debug'get run .go'”。

可能的解释

注意:我没有看到有关它的任何进一步细节。

事实:“Go Application”配置会在运行之前构建二进制可执行文件。

事实:我看到控制台输出(Goglang内部)是IDE使用DLV作为调试工具。

事实:我在DLV documentation找到dlv debug,似乎可以编译和调试代码。

假设:来自Jetbrains的人没有实现它。或者至少不是 YET

答案 2 :(得分:1)

我遇到了这个问题。

删除并重新创建Debug运行配置。然后调试工作完美。

答案 3 :(得分:1)

自@Jamillo Santos添加他的回复以来,事情发生了变化。

首先,没有更多的“转到应用程序”。

最简单的方法是找到包含main()函数的文件。 应该有一个指向它的小三角形,如所附的屏幕截图所示: main function declaration

单击绿色小三角形时,将显示一个带有“运行/调试”选项的菜单。 每个都将创建一个go build配置。

您可以编辑该go build配置并为您的应用程序添加程序参数。 例如,如果您的程序的命令行参数为--arg=value,则可以这样添加它: enter image description here

答案 4 :(得分:0)

在版本2019.1.1上,不再有 Go Application 。使用 Go Build 。在这里,我正在调试一个脚本文件,但是如果您有服务器应用程序或smth,请指向主应用程序文件:

enter image description here

请注意,您必须在文件字段中指定实际的文件路径。您可以通过使用管道|分隔文件来放置更多文件(如果您希望有更多的起点)。对于每个您希望能够调试的文件,您需要指定完整路径。

同样,如果您要调试服务器应用程序或其他具有单个起点的应用程序,则只需要配置中指定的启动文件。 :)

答案 5 :(得分:-2)

我右键单击项目(main.go inside)并选择“Debug ...”并且它可以正常工作

enter image description here

答案 6 :(得分:-2)

您可以将文件名更改为" main.go"它有主要功能。 这可能是一个错误。