debugging - Golang 调试器未运行

标签 debugging go visual-studio-code delve

我正在尝试使用 Go 设置 VS Code,但在附加调试器时出现错误。由于我是 VS Code 的新手,所以我不知道为什么。

我已经安装了 delve 调试器:

go get -u github.com/derekparker/delve/cmd/dlv
delv -v 
delv 9.11.3-1ubuntu1.1-Ubuntu

当我尝试将调试器附加到一个非常简单的 golang 文件时出现此错误:

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

代码:

package email

import "fmt"

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

}

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

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

这让我觉得我的项目组织有问题。我有一个项目有一堆可重用的包。我不想为每个单独的包创建一个 github 存储库。本质上:

package1
-- package1.go
-- package1_test.go
package2
-- package2.go
-- package2_test.go
...
package10
-- package10.go
-- package10_test.go

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

最佳答案

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

package main

import "fmt"

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

}

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

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

{
    "name": "Remote",
    "type": "go",
    "request": "launch",
    "mode": "remote",
    "remotePath": "${workspaceRoot}",
    "port": 2345,
    "host": "127.0.0.1",
    "program": "${workspaceRoot}",
    "env": {}
}

关于debugging - Golang 调试器未运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52100959/

相关文章:

c# - 当观察变量改变时暂停执行?

windows - 分析msvcr80.dll中的应用程序故障,故障地址0x00008aa0

amazon-web-services - lambda 层与 Go 兼容吗?

json - 解码没有键的嵌套 json

visual-studio-code - VSCode 命令面板(Ctrl + Shift + P)键盘快捷键在新安装中不起作用

c - 如何编译带有头文件的c文件

visual-studio-code - 如何在 vscode 中禁用受限模式功能和/或横幅

c++ - 使用.natvis 文件在visual studio 2015 中自定义多维数组调试

go - 无法制作grpc-gateway .gw.pb,并且没有错误

javascript - chrome 通过远程调试检查闪烁