共计 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…
正文完