對於golang這類靜態型語言調試工具是必不可少的,無論是在平時的開發仍是對語言底層原理的熟悉上面都是很重要的工具。gdb做爲unix及unix-like系統上面強大的調試工具一樣能夠調試golang應用。golang
經過下面的講解你能夠一步一步的看到golang代碼是如何執行的,變量如何賦值的,內存是何時分配的等等一系列底層原理。bash
go開發環境函數
一段簡短的golang代碼工具
package main
import "fmt"
func main(){
c:=make(map[string]interface{})
fmt.Println(c)
}複製代碼
go build -gcflags "-N -l" test.go //生成可執行代碼,編譯,關閉內聯優化優化
好了,至此準備工做已經ok,環境,工具,運行程序都有了,下面開始利用gdb調試go可執行文件。ui
gdb -tui test #在運行時同時顯示代碼 特別方便spa
>> b main.main //在main函數加斷點.net
>>run //運行進程unix
>>s //s是step的縮寫,s和n的區別 看下面指針
、、、、、、、、、、
s: 執行一行源程序代碼,若是此行代碼中有函數調用,則進入該函數;
經過上面的能夠清晰的看出來,隨着輸入s能夠看出代碼詳細的執行過程,好比map的執行過程,內存分配過程等等,若是隻是想看寫的代碼一行一行的執行結果能夠輸入n。
經過上面的命令已經能夠很好的查看golang代碼運行過程,下面是一些具體的變量信息,方便更加具體瞭解值。
whatis i // 查看對象類型
c // 繼續執行,觸發 breakpoint() 斷點。
info args // 從參數信息中,咱們能夠看到命名返回參數的值。
x/3xw &r // 查看 r 內存數據。(指針 8 + 長度 4)
q // 退出 GDB。
強烈推薦blog:
https://blog.csdn.net/liigo/article/details/582231?utm_source=copy 這篇文章能夠好