調(diào)試是一種技能,不限于我們說的debug,這只是其中的一種,這是可以打斷點的調(diào)試,除此之外,還有打印輸出、日志記錄、單元測試,這都可以稱之為調(diào)試程序的手段。
打印輸出是一種比較傳統(tǒng)的調(diào)試手段,我們可以把我們需要了解的變量值,執(zhí)行的步驟等打印出來,來證明我們的猜測,以便解決問題。
func min(a,b int) int {
//調(diào)試輸出
fmt.Println("a:",a,",b:",b)
if a>b {
return b
} else {
return a
}
}
這是一個求最小值的函數(shù),其中的fmt.Println("a:",a,",b:",b) 就是我們加入的調(diào)試輸出語句,這樣我們就可以看到被比較的兩個數(shù)的值,進而推測我們求最小值的算法是否正確。
打印輸出不僅可以輸出數(shù)值,還可以通過測試是否有輸出來判斷程序走了哪個邏輯,比如if語句,可能因為比較的錯誤,程序進入了另外一個if分支,那么我們就可以通過使用打印輸出來判斷。
這個和打印非常像,但是他比打印多了很多信息,比如發(fā)生時間,發(fā)生的代碼行數(shù)等,這種尤其在我們遇到線上問題的時候尤其有用。
比如我們監(jiān)控到有一些部分用戶的登陸一直失敗,那么我們就就可以通過我們的日志文件里的日志,來定位時間、IP、用戶、錯誤信息以及代碼行等,最終找到問題,解決問題。關(guān)于日志的適用可以參考我以前的一篇文章 http://www.flysnow.org/2017/05/06/go-in-action-go-log.html,這里就不再詳細介紹了。
GDB是一款類Unix下的調(diào)試器,可以幫助我們調(diào)試可執(zhí)行的程序,Go也對GDB進行了支持,所以我們也可以適用GDB調(diào)試go程序。
GDB是命令行的工具,在調(diào)試前,我們要先編譯出我們需要調(diào)試的程序。使用go build -gcflags "-N -l" main.go即可進行編譯。這里-N -l的標(biāo)記是忽略編譯器優(yōu)化的意思,這樣我們就可以更容易的調(diào)試程序。
調(diào)試通過gdb main啟動,會進入一個GDB的調(diào)試界面,在這里面我們可以通過list命令查看代碼,可以通過b命令對某一行打斷點,可以通過run命令運行等,具體的可以參考GDB相關(guān)文檔,這里不做詳細介紹。
Delve是一個專門為調(diào)試Go程序而生的調(diào)試工具,它比GDB更強大,尤其時調(diào)試多goroutine高并發(fā)的Go程序。Delve的項目地址為https://github.com/derekparker/delve,它業(yè)績大部分Go開發(fā)IDE選用的調(diào)試工具,比如Goland,后面我們再介紹。
Delve的使用和GDB非常像,都是命令行的工具,我們可以通過dlv debug main.go啟動,然后就會進入一個交互界面,在這個界面里我們就可以進行調(diào)試操作了。
Delve的一些常用命令如下:
1.break 打斷點
continue 運行到斷點處
clear 刪除斷點
list 顯示源代碼
next 運行到下一行
locals 打印局部變量
print 打印一個變量或者表達式
exit 退出調(diào)試
除此之外,還有很多,大家可以參考Delve的文檔進行調(diào)試。
對于調(diào)試來說,命令行下的太麻煩了,所以為了工具效率,建議大家使用IDE進行調(diào)試,可見,逐行,效率高。
調(diào)試這個事情,只要可以解決我們的問題就好,有一個好的IDE可以幫助我們更高效率的調(diào)試,何樂不為呢。
這里推薦Goland,Jetbrains出品,老牌IDE廠商,非常方便。它家有很多IDE,而且快捷鍵都一樣了,會了一個其他的也都會了。
IDE調(diào)試非常簡單,點擊工具欄的啟動調(diào)試按鈕,就可以調(diào)試了,記得提前打上斷點。然后F8和F7配合就可以調(diào)試了,有專門的調(diào)試窗口可以看當(dāng)前的局部變量,堆棧信息等,很簡單,這里不做詳細介紹了。
單元測試也是一種調(diào)試的手段,我們可以模擬很多場景來驗證我們邏輯的正確性,遇到問題,打印輸出等,所以也是一種調(diào)試的手段
創(chuàng)新互聯(lián)www.cdcxhl.cn,專業(yè)提供香港、美國云服務(wù)器,動態(tài)BGP最優(yōu)骨干路由自動選擇,持續(xù)穩(wěn)定高效的網(wǎng)絡(luò)助力業(yè)務(wù)部署。公司持有工信部辦法的idc、isp許可證, 機房獨有T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確進行流量調(diào)度,確保服務(wù)器高可用性。佳節(jié)活動現(xiàn)已開啟,新人活動云服務(wù)器買多久送多久。
當(dāng)前標(biāo)題:Go語言之調(diào)試-創(chuàng)新互聯(lián)
網(wǎng)站鏈接:http://www.ekvhdxd.cn/article36/dhhpsg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供移動網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計公司、域名注冊、面包屑導(dǎo)航、電子商務(wù)、軟件開發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容