关于golang:goland进阶调试本地进程

78次阅读

共计 852 个字符,预计需要花费 3 分钟才能阅读完成。

大部分人都用过 goland 的 debug,但这种 debug 只是一个初级阶段的利用,适宜用于单体服务,数据流转比拟繁多的,在开发或调试过程中,http 申请能够间接发到由 goland 启动的过程中。

但如果是申请并非间接到 goland,而是发送给曾经是二进制的过程呢?

如果是单纯点击“Debug”按钮的话,尽管进入了 debug 状态,但会发现 http 申请发动了,但没有被 goland 捕捉到,所以没有方法通过 goland 的“Step into”、“Step out”等调试按钮实现调试过程。

解决方案: Attach to Process

package main

import ("github.com/gin-gonic/gin")
func main() {r := gin.Default()
    r.GET("/ping", func(c *gin.Context) {
        c.JSON(200, gin.H{"message": "pong",})
    })
    r.Run()}
①为了可能 Attach to Process 过程绑定,不便调试,须要用以下命令生成二进制文件,运行程序

go build -gcflags="all=-N -l"     # -gcflags="all=-N -l" 目标是去掉编译优化,不便调试 

②进入 goland,打上断点,鼠标点击菜单栏“Run”

③点击 Attach to Process

④这时候 ide 会弹出过程抉择框,即抉择绑定哪个过程,进行调试。

⑤绑定过程后就进入到了 ide 的调试状态

留神:肯定要用指定的命令生成的二进制文件,能力被 ide 捕捉到,否则就会说“No process to attach to”

go build -gcflags="all=-N -l"    # -gcflags="all=-N -l" 目标是去掉编译优化,不便调试 

试验一下,发动申请,能够看到申请在之前打的断点中拦住了,阐明操作是正确的,能够 debug 本地机器的 go 过程了。

浏览器拜访 http://127.0.0.1:8080/ping

参考文章: https://blog.csdn.net/qq_4240…

正文完
 0