大部分人都用过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...