golang調試工具Delve

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。

 

  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 main 2  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 斷行符號,逐步執行,

  輸入 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

 

 

  斷點執行了。然後調試你的代碼吧!

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.