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

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

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

解决方案: Attach to Process

package mainimport (    "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...