为了账号安全,请及时绑定邮箱和手机立即绑定

Golang 调试器未运行

Golang 调试器未运行

Go
胡子哥哥 2023-03-29 15:21:24
我正在尝试使用 Go 设置 VS Code,但在附加调试器时出现错误。由于我是 VS Code 的新手,所以我不知道为什么。我已经安装了 delve 调试器:go get -u github.com/derekparker/delve/cmd/dlvdelv -v delv 9.11.3-1ubuntu1.1-Ubuntu当我尝试将调试器附加到一个非常简单的 golang 文件时出现此错误:API server listening at: 127.0.0.1:2345time="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=debuggerCan not debug non-main packageProcess exiting with code: 1代码:package emailimport "fmt"// SendEmail - Sends The emailfunc SendEmail() {}func main() {    fmt.Println("Hello World!")    i := 101    fmt.Println(i)}这一切都非常有帮助,非常感谢。这让我觉得我的项目组织有问题。我有一个项目有一堆可重用的包。我不想为每个单独的包创建一个 github 存储库。本质上:package1-- package1.go-- package1_test.gopackage2-- package2.go-- package2_test.go...package10-- package10.go-- package10_test.go这结构不正确吗?有推荐的方法来完成这个吗?
查看完整描述

2 回答

?
婷婷同学_

TA贡献1844条经验 获得超8个赞

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


package main


import "fmt"


// SendEmail - Sends The email

func SendEmail() {


}


func main() {

    fmt.Println("Hello World!")

    i := 101

    fmt.Println(i)

}

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


{

    "name": "Remote",

    "type": "go",

    "request": "launch",

    "mode": "remote",

    "remotePath": "${workspaceRoot}",

    "port": 2345,

    "host": "127.0.0.1",

    "program": "${workspaceRoot}",

    "env": {}

}


查看完整回答
反对 回复 2023-03-29
?
叮当猫咪

TA贡献1776条经验 获得超12个赞

正如错误所暗示的那样,您只能调试一个main包(名为 的包main)——具体来说,因为您只能运行一个main包。在 Go 中,二进制文件的起点是main()包中调用的函数main。在您的代码中,您有一个名为 的函数main(),但它位于一个名为 的包中email,该包无法构建到程序中,因此无法调试。

程序开始在 package 中运行main

一个完整的程序是通过将称为主包的单个未导入的包与其导入的所有包可传递地链接起来创建的。主包必须有包名main并声明一个main不接受任何参数且不返回任何值的函数。


查看完整回答
反对 回复 2023-03-29
  • 2 回答
  • 0 关注
  • 98 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信