登录
首页 >  Golang >  Go问答

使用 Visual Studio Code 调试 Go 应用程序

来源:stackoverflow

时间:2024-02-24 14:03:28 452浏览 收藏

各位小伙伴们,大家好呀!看看今天我又给各位带来了什么文章?本文标题《使用 Visual Studio Code 调试 Go 应用程序》,很明显是关于Golang的文章哈哈哈,其中内容主要会涉及到等等,如果能帮到你,觉得很不错的话,欢迎各位多多点评和分享!

问题内容

我正在尝试在 visual studio code 上调试 go 应用程序,但它似乎对我不起作用。这是目录树。

运行流程

为了运行服务器,我首先在终端上运行以下命令

go run -tags=jsoniter cmd/server/*

之后,我通过 postman 使用 api 来运行各个服务。

调试流程:

同样,我想调试服务(通过 api 命中)。添加一些断点后,我按照说明在 .vscode 目录中创建了 launch.json 文件。

这是launch.json中的配置

{
            "name": "launch package",
            "type": "go",
            "request": "launch",
            "mode": "debug",
            "program": "cmd/server/",
            //"host": "127.0.0.1",
            //"port": 8080,
        },

设置完成后,我单击“运行”来启动服务器,但出现以下错误:无法启动:无法启动进程:无法在rosetta下运行,请检查已安装的go版本是否适合您的版本cpu架构

我访问了一些网站,他们说这可能是因为我为 apple m1 芯片使用了错误的 go 版本。我检查并按照建议使用了正确的版本,但仍然遇到了同样的问题

$go version
>go version go1.17.3 darwin/arm64

额外:如果我取消注释两个配置行 "host""port",vcs 会告诉我该文件是错误的。当我评论这两行时,它会尝试在随机端口57169启动服务器。但是,当然,它会陷入上述错误。

问题:

  • 我的调试有什么问题吗?目前,我必须通过将 log 添加到代码中并跟踪它们来进行调试。我认为这不是最有效的。
  • 如果 vcs 不适用于我(不幸的是),您会建议使用另一种 ide/方法进行调试吗?

更新:我按照有人的建议在 goland 上尝试了这个,但它对我来说也不起作用。我收到了同样的错误


正确答案


我创建了一个简单的处理程序,并尝试在 apple m1 芯片上运行的 vscode 上进行调试。调试器正在为我工​​作。我能够将调试器附加到正在运行的进程。

launch.json配置 (这里设置processid:0,意味着vscode会给我们一个选项来选择我们想要调试的进程)

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "connect to server",
            "type": "go",
            "request": "attach",
            "mode": "local",
            "processid": 0,
        }
    ]
}

main.go 文件:

package main

import (
    "fmt"
    "net/http"
)

func main() {
    http.HandleFunc("/", handler)
    http.ListenAndServe(":8080", nil)
}

func handler(w http.ResponseWriter, r *http.Request) {
    a := r.URL.Path
    fmt.Fprintf(w, "Hello, %s!", a[1:])
}

目录结构:

构建和运行:

开始调试:(选择进程的选项,我的进程名称是vscode-go)

调试器在向 localhost:8080/test 发出请求时工作:

有关将调试器附加到正在运行的进程的更多详细信息,请参见 here

今天关于《使用 Visual Studio Code 调试 Go 应用程序》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>