golang调试工具Delve
?
轉自:http://www.cnblogs.com/li-peng/p/8522592.html
Devle是一個非常棒的golang?調試工具,支持多種調試方式,直接運行調試,或者attach到一個正在運行中的golang程序,進行調試。
線上golang服務出現問題時,Devle是必不少的在線調試工具,如果使用docker,也可以把Devle打進docker鏡像里,調試代碼。
安裝Devle
安裝Devle非常簡單,直接運行go? get?即可:
go get -u github.com/derekparker/delve/cmd/dlv如果你的go版本為1.5請先設置環境變量GO15VENDOREXPERIMENT=1再運行go get。我的go版本為1.10,不用設置。
? 使用Devle調試golang服務
先寫一個簡單的web服務,然后使用Devle來進行調試。
在$GOPATH/src/github.com/mytest?文件夾下創建main.go
1 package main2 3 import (4 "fmt"5 "log"6 "net/http"7 "os"8 )9 10 const port = "8000" 11 12 func main() { 13 http.HandleFunc("/hi", hi) 14 15 fmt.Println("runing on port: " + port) 16 log.Fatal(http.ListenAndServe(":" + port, nil)) 17 } 18 19 func hi(w http.ResponseWriter, r *http.Request) { 20 hostName, _ := os.Hostname() 21 fmt.Fprintf(w, "HostName: %s", hostName) 22 }簡單吧,一個運行在8000端口上的web服務,訪問 hi會返回機器的名稱。上面代碼的行號是很有用的,等會我們打斷點的時候會用到。
? ? 使用Delve運行我們的main.go
dlv debug ./main.go?
可以輸入help來看一下幫助文檔
?
很簡單的一些命令
我們先打在main方法上打一個斷點:
b main.main?然后運行c?來運行到斷點,
?
?
?
在func li? 里打一個斷點,我們可以使用
b main.hi或者使用? ?"文件:行號"來打斷點
b /home/goworkspace/src/github.com/mytest/main.go:20?
?
現在執行continue?讓服務跑起來。訪問一下我們的服務,看hi方法會不會停下來。
curl localhost:8000/hi看到了沒,在19號停下來了。
輸入 n?回車,執行到下一行
輸入s 回車,單步執行
輸入 print(別名p)輸出變量信息
輸入 args?打印出所有的方法參數信息
輸入 locals?打印所有的本地變量
?
?其他的命令我就不在這里給大家演示了,自己動動手試一下。
使用Delve附加到運行的golang服務進行調試
? 先編譯一下我們的main.go然后去行main
go build main.go./main?
?
然后使用Delve附加到我們的項目上,先看一下我們的項目的pid
ps aux|grep main dlv attach 29260?
在hi方法里打斷點,然后執行c來等待斷點的執行。
b /home/goworkspace/src/github.com/mytest/main.go:20
訪問我們的服務器,看一下斷點會不會被執行
curl localhost:8000/hi?
?
斷點執行了。然后調試你的代碼吧!
?
=========================================================================================
遠程調試
在服務器上 ps x|grep game 查找到gameserver的進程pid
然后服務器命令行輸入:
dlv attach $PID --headless --api-version=2 --log --listen=:8181
本機只要輸入:
dlv connect remote_ip:8181?連接到服務器上的dlv進程,就可以在本機遠程調試了。
?
goland調試=========================================================================================
dlv停止調試可以用ctrl+|
轉載于:https://www.cnblogs.com/mrblue/p/10283936.html
總結
以上是生活随笔為你收集整理的golang调试工具Delve的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CentOS 7安装GitLab、汉化、
- 下一篇: 【代码笔记】Web-CSS-CSS 链接