首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >戈朗调试器不运行

戈朗调试器不运行
EN

Stack Overflow用户
提问于 2018-08-30 15:46:00
回答 1查看 6.9K关注 0票数 0

我正在尝试使用Go设置VS代码,并且在附加调试器时得到一个错误。由于我是全新的VS代码,我没有任何线索,为什么。

我已经安装了delve调试器:

代码语言:javascript
复制
go get -u github.com/derekparker/delve/cmd/dlv
delv -v 
delv 9.11.3-1ubuntu1.1-Ubuntu

当我试图将调试器附加到一个非常简单的golang文件时,我会得到这个错误:

代码语言:javascript
复制
API server listening at: 127.0.0.1:2345
time="2018-08-30T09:39:57-06:00" level=info msg="launching process with args: [/home/craig/Documents/GoLang/src/github.com/mornindew/sharedPackages/email/debug]" layer=debugger
Can not debug non-main package
Process exiting with code: 1

代码:

代码语言:javascript
复制
package email

import "fmt"

// SendEmail - Sends The email
func SendEmail() {

}

func main() {
    fmt.Println("Hello World!")
    i := 101
    fmt.Println(i)
}

这一切都很有帮助,非常感谢。

这让我觉得我的项目组织有问题。我有一个项目,它有一堆可重用的包。我不想为每个单独的包创建一个github回购。实质上:

代码语言:javascript
复制
package1
-- package1.go
-- package1_test.go
package2
-- package2.go
-- package2_test.go
...
package10
-- package10.go
-- package10_test.go

这个结构是否不正确?有什么推荐的方法来完成这个任务吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-30 15:49:11

此错误是因为您正在尝试调试非主包。如果您有设置来调试具有main函数的文件,则从主包调试该文件。否则,可以创建用于调试整个包的设置。但是对于您的问题,只需将包名更改为

代码语言:javascript
复制
package main

import "fmt"

// SendEmail - Sends The email
func SendEmail() {

}

func main() {
    fmt.Println("Hello World!")
    i := 101
    fmt.Println(i)
}

或者从具有主函数的主包中运行调试器。要调试整个工作区,请将launch.json中的设置更改为:

代码语言:javascript
复制
{
    "name": "Remote",
    "type": "go",
    "request": "launch",
    "mode": "remote",
    "remotePath": "${workspaceRoot}",
    "port": 2345,
    "host": "127.0.0.1",
    "program": "${workspaceRoot}",
    "env": {}
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52100959

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档