日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

golang调试工具Delve

發布時間:2024/4/17 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。