真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

go語(yǔ)言debug go語(yǔ)言的不足

調(diào)試Go語(yǔ)言的核心轉(zhuǎn)儲(chǔ)(Core Dumps)

英文原文鏈接【Go, the unwritten parts】 發(fā)表于2017/05/22 作者JBD是Go語(yǔ)言開發(fā)小組成員

甘德ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書未來(lái)市場(chǎng)廣闊!成為創(chuàng)新互聯(lián)公司的ssl證書銷售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18982081108(備注:SSL證書合作)期待與您的合作!

檢查程序的執(zhí)行路徑和當(dāng)前狀態(tài)是非常有用的調(diào)試手段。核心文件(core file)包含了一個(gè)運(yùn)行進(jìn)程的內(nèi)存轉(zhuǎn)儲(chǔ)和狀態(tài)。它主要是用來(lái)作為事后調(diào)試程序用的。它也可以被用來(lái)查看一個(gè)運(yùn)行中的程序的狀態(tài)。這兩個(gè)使用場(chǎng)景使調(diào)試文件轉(zhuǎn)儲(chǔ)成為一個(gè)非常好的診斷手段。我們可以用這個(gè)方法來(lái)做事后診斷和分析線上的服務(wù)(production services)。

在這篇文章中,我們將用一個(gè)簡(jiǎn)單的hello world網(wǎng)站服務(wù)作為例子。在現(xiàn)實(shí)中,我們的程序很容易就會(huì)變得很復(fù)雜。分析核心轉(zhuǎn)儲(chǔ)給我們提供了一個(gè)機(jī)會(huì)去重構(gòu)程序的狀態(tài)并且查看只有在某些條件/環(huán)境下才能重現(xiàn)的案例。

作者注 : 這個(gè)調(diào)試流程只在Linux上可行。我不是很確定它是否在其它Unixs系統(tǒng)上工作。macOS對(duì)此還不支持。Windows現(xiàn)在也不支持。

在我們開始前,需要確保核心轉(zhuǎn)儲(chǔ)的ulimit設(shè)置在合適的范圍。它的缺省值是0,意味著最大的核心文件大小是0。我通常在我的開發(fā)機(jī)器上將它設(shè)置成unlimited。使用以下命令:

接下來(lái),你需要在你的機(jī)器上安裝 delve 。

下面我們使用的 main.go 文件。它注冊(cè)了一個(gè)簡(jiǎn)單的請(qǐng)求處理函數(shù)(handler)然后啟動(dòng)了HTTP服務(wù)。

讓我們編譯并生產(chǎn)二進(jìn)制文件。

現(xiàn)在讓我們假設(shè),這個(gè)服務(wù)器出了些問(wèn)題,但是我們并不是很確定問(wèn)題的根源。你可能已經(jīng)在程序里加了很多輔助信息,但還是無(wú)法從這些調(diào)試信息中找出線索。通常在這種情況下,當(dāng)前進(jìn)程的快照會(huì)非常有用。我們可以用這個(gè)快照深入查看程序的當(dāng)前狀態(tài)。

有幾個(gè)方式來(lái)獲取核心文件。你可能已經(jīng)熟悉了奔潰轉(zhuǎn)儲(chǔ)(crash dumps)。它們是在一個(gè)程序奔潰的時(shí)候?qū)懭氪疟P的核心轉(zhuǎn)儲(chǔ)。Go語(yǔ)言在缺省設(shè)置下不會(huì)生產(chǎn)奔潰轉(zhuǎn)儲(chǔ)。但是當(dāng)你把 GOTRACEBACK 環(huán)境變量設(shè)置成“crash”,你就可以用 Ctrl+backslash 才觸發(fā)奔潰轉(zhuǎn)儲(chǔ)。如下圖所示:

上面的操作會(huì)使程序終止,將堆棧跟蹤(stack trace)打印出來(lái),并把核心轉(zhuǎn)儲(chǔ)文件寫入磁盤。

另外個(gè)方法可以從一個(gè)運(yùn)行的程序獲得核心轉(zhuǎn)儲(chǔ)而不需要終止相應(yīng)的進(jìn)程。 gcore 可以生產(chǎn)核心文件而無(wú)需使運(yùn)行中的程序退出。

根據(jù)上面的操作,我們獲得了轉(zhuǎn)儲(chǔ)而沒(méi)有終止對(duì)應(yīng)的進(jìn)程。下一步就是把核心文件加載進(jìn)delve并開始分析。

差不多就這些。delve的常用操作都可以使用。你可以backtrace,list,查看變量等等。有些功能不可用因?yàn)槲覀兪褂玫暮诵霓D(zhuǎn)儲(chǔ)是一個(gè)快照而不是正在運(yùn)行的進(jìn)程。但是程序執(zhí)行路徑和狀態(tài)全部可以訪問(wèn)。

go語(yǔ)言編輯器goland怎樣打debug

1、fmt包或者log包

fmt.Println函數(shù)

2、 debug包

debug.Stack()函數(shù)獲取堆棧調(diào)用信息

golang不能使用debug

問(wèn)題

Goland和Idea使用debug報(bào)錯(cuò),如下:could not launch process: decoding dwarf section info at offset 0x0: too short。

解決方法

1,更新dlv

2.修改goland或idea配置

更新后的div在$gopath路徑下的bin文件夾下。

替換到idea或goland的這個(gè)目錄下

重啟ide,問(wèn)題解決


網(wǎng)頁(yè)題目:go語(yǔ)言debug go語(yǔ)言的不足
當(dāng)前地址:http://weahome.cn/article/doipgss.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部