可以去DELVE官網(wǎng)進(jìn)行下載。

創(chuàng)新互聯(lián)是少有的成都網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)、營銷型企業(yè)網(wǎng)站、重慶小程序開發(fā)、手機(jī)APP,開發(fā)、制作、設(shè)計(jì)、買鏈接、推廣優(yōu)化一站式服務(wù)網(wǎng)絡(luò)公司,成立與2013年,堅(jiān)持透明化,價(jià)格低,無套路經(jīng)營理念。讓網(wǎng)頁驚喜每一位訪客多年來深受用戶好評(píng)
關(guān)于delve工具的介紹,這里簡(jiǎn)單給大家介紹一下。
delve在go項(xiàng)目及應(yīng)饑擾孝用的開發(fā)中可以用來追蹤程序中的異常代碼,也可以通過打日志的方式追查問題,但是更重要也是非常厲害的一點(diǎn),就是delve可以直接分析程序執(zhí)行的情況。這一點(diǎn)在后期或線上的問題排查中無疑是提供了一個(gè)非常大的便捷。
Go(又稱?Golang)是?Google?的 Robert Griesemer,Rob Pike 及 Ken Thompson 開發(fā)的一種靜態(tài)強(qiáng)類型、編譯型語言。
Go 語言語法與?C?相近,但功能上有:內(nèi)存安全,GC(垃圾回收),結(jié)構(gòu)形態(tài)及 CSP-style?并發(fā)計(jì)算。
Go的語法接近C語言,但對(duì)于變量的聲明有所不同。Go支持垃圾回收爛稿功能。Go的并行模型是以東尼·霍爾的通信順序進(jìn)程(CSP)為基礎(chǔ)。
采取類似模型的其他語言包括Occam和Limbo,但它也具有Pi運(yùn)算的特征,李罩比如通道傳輸。在1.8版本中開放插件(Plugin)的支持,這意味著現(xiàn)在能從Go中動(dòng)態(tài)加載部分函數(shù)。
Delve常用命令
命令功能:
dlv attach后面跟 pid,用來Debug編譯好的Golang程序。
dlv core用于 coredump。
dlv debug后面跟要調(diào)試的 go 文件,進(jìn)入 Debug。
dlv testDebug test 函數(shù)。
delve 是go語言的調(diào)猛敬試器,delve的目標(biāo)是為go提供一個(gè)簡(jiǎn)潔、功能齊全的debug工具,delve易于調(diào)用和使用。
為了能夠編譯delve,需要安裝Go 1.10或更高版本
安裝好go后,直接go get即可安裝,更多安裝教程見:
go get github點(diǎn)抗 /go-delve/delve/cmd/dlv
安裝好后,在終端執(zhí)行dlv或者dlv help 會(huì)看到dlv的幫助信息,則說明安裝成功
dlv常用命令
delve的目標(biāo)是成為一個(gè)簡(jiǎn)潔而強(qiáng)大的工具。但如果你不習(xí)慣在編譯語言中使用源碼調(diào)試,則可能令人困惑。本文檔將提供開始調(diào)試go程序所需的全部信息。
調(diào)試?yán)映绦蛉缦?/p>
├── go.mod
├── go.sum
├── main.go
├── test
└── utils
├── util.go
└── util_test.go
調(diào)試程序主要有三個(gè)文件,main.go、util.go、util_test.go,內(nèi)容如下,比較簡(jiǎn)單,go包管理工具使用的是go module,模塊名為test
在vscode debug 的設(shè)置中配置launch.json文件
mode 設(shè)置為debug時(shí),program的內(nèi)容${fileDirname}即可,mode 設(shè)置為exec時(shí),program的值為二進(jìn)制文件的路徑,通過設(shè)置mode的值,即可調(diào)試源碼和二進(jìn)制程序(也需要有源碼)。mode模式為auto時(shí),測(cè)試了下,vscode 并不能通過program的內(nèi)容來判斷是debug還是exec
遠(yuǎn)程調(diào)試時(shí),需信知談要在遠(yuǎn)程也有源碼、二進(jìn)制包和dlv工具
在遠(yuǎn)端執(zhí)行dlv命令
dlv debug --headless --listen=:8989 --api-version=2 --accept-multiclient #用degbug方式啟動(dòng)遠(yuǎn)程應(yīng)用程序
dlv exec --headless --listen=:8989 ./test --api-version=2 --accept-multiclient # exec執(zhí)行當(dāng)前目錄下的test二進(jìn)制文件
--listen:指定調(diào)試端口
--api-version:指定api版本,默認(rèn)是1
--accept-multiclient:接受多個(gè)client調(diào)試
在vscode中線下好源碼,和遠(yuǎn)端的源碼結(jié)構(gòu)一致。滑碰launch.json配置如下:
在vscode中打好斷點(diǎn)后,就可以進(jìn)行遠(yuǎn)程調(diào)試了
當(dāng)您的代碼使用外部包時(shí),這些包(作為模塊分發(fā))成為依賴項(xiàng)。隨著時(shí)間的推移,您可能需要升級(jí)或更換它們。Go 提供了依賴管理工具,可幫助您在合并外部依賴項(xiàng)時(shí)確保 Go 應(yīng)用程序的安全。
本主題介紹如何執(zhí)行任務(wù)以管理您在代碼中承擔(dān)的依賴項(xiàng)。您可以使用 Go 工具執(zhí)行其中的大部分操作。本主題還介紹了如何執(zhí)行其他一些您可能會(huì)覺得有用的依賴相關(guān)任務(wù)。
您可以通過 Go 工具獲取和使用有用的包。在 pkg.go.dev 上,您可以搜索您可能覺得有用的包,然后使用go命令將這些包導(dǎo)入您自己的代碼中以調(diào)用它們的功能。
下面列出了最常見的依賴項(xiàng)管理步驟。
在 Go 中,您將依賴項(xiàng)作為包含您導(dǎo)入的檔核包的模塊來管理。此過程由以備蠢頃下機(jī)構(gòu)支持:
您可以搜索pkg.go.dev以查找具有您可能覺得有用的功能的軟件包。
找到要在代碼中使用的包后,在頁面頂部找到包路徑,然后單擊復(fù)制路徑按鈕將路徑復(fù)制到剪貼板。在您自己的代碼中,將路徑粘貼到導(dǎo)入語句中,如下例所示:
在您的代碼導(dǎo)入包后,啟用依賴項(xiàng)跟蹤并獲取包的代碼進(jìn)行編譯。
要跟蹤和管理您添加的依賴項(xiàng),您首先要將代碼放入其自己的模塊中。這會(huì)在源代碼樹的根目錄創(chuàng)建一個(gè) go.mod 文件。您添加的依賴項(xiàng)將列在該文件中。
要將您的代碼添加到它自己的模塊中,請(qǐng)使用 go mod init命令。例如,從命令行切換到代碼的根目錄,然后按照以下示例運(yùn)行命令:
該go mod init命令的參數(shù)是您的模塊的模塊路徑。如果可能,模塊路徑應(yīng)該是源代碼的存儲(chǔ)庫位置。
如果一開始您不知道模塊的最終存儲(chǔ)庫位置,請(qǐng)使用安全的替代品。這可能是您擁有的域的名稱或您控制的另一個(gè)名稱(例如您的公司名稱),以及來自模塊名稱或源目錄的路徑。
當(dāng)您使用 Go 工具管理依賴項(xiàng)時(shí),這些工具會(huì)更新 go.mod 文件,以便它維護(hù)您的依賴項(xiàng)的當(dāng)前列表。
添加依賴項(xiàng)時(shí),Go 工具還會(huì)創(chuàng)建一個(gè) go.sum 文件,其中包含您所依賴的模塊的校驗(yàn)和。Go 使用它來驗(yàn)證下載的模塊文件的完整性,特別是對(duì)于在您的項(xiàng)目上工作的其他開發(fā)人員。
在代碼中包含存儲(chǔ)庫中的 go.mod 和 go.sum 文件。
當(dāng)您運(yùn)行g(shù)o mod init創(chuàng)建用于跟蹤依賴項(xiàng)的模塊時(shí),您指定一個(gè)模塊路徑作為模塊的名稱。模塊路徑成為模塊中包的導(dǎo)入路徑前綴。一定要指定一個(gè)不會(huì)與其他模塊的模塊路徑?jīng)_突的模塊路徑。
至少,一個(gè)模塊路徑只需要表明它的來源,例如公司或仿陸作者或所有者名稱。但是路徑也可能更能描述模塊是什么或做什么。
模塊路徑通常采用以下形式:
1、Go 工具可以在其中找到模塊源代碼的存儲(chǔ)庫的位置。
例如,它可能是github點(diǎn)抗 / /.
如果您認(rèn)為您可能會(huì)發(fā)布模塊供其他人使用,請(qǐng)使用此最佳實(shí)踐。
2、一個(gè)你控制的名字。
如果您不使用存儲(chǔ)庫名稱,請(qǐng)務(wù)必選擇一個(gè)您確信不會(huì)被其他人使用的前綴。一個(gè)不錯(cuò)的選擇是您公司的名稱。避免使用常用術(shù)語,例如widgets、utilities或 app。
Go 保證以下字符串不會(huì)在包名稱中使用。
1、test– 您可以將test用作模塊路徑前綴以便代碼用于在另一個(gè)模塊中本地測(cè)試功能進(jìn)行測(cè)試。
使用test作為模塊路徑前綴是測(cè)試的一部分。例如,您的測(cè)試本身可能會(huì)運(yùn)行g(shù)o mod init test,然后以某種特定方式設(shè)置該模塊,以便使用 Go 源代碼分析工具進(jìn)行測(cè)試。
2、example– 在某些 Go 文檔中用作模塊路徑前綴,例如在創(chuàng)建模塊以跟蹤依賴關(guān)系的教程中。
請(qǐng)注意,Go 文檔還用于example點(diǎn)抗 說明示例何時(shí)可能是已發(fā)布的模塊。
?? 當(dāng)讀取91.2 MB文件時(shí),read1耗時(shí)43ms,read2耗時(shí)99ms。
查看源碼:
讀搏碧取文件主要基腔舉是通過 Read(p []byte) (n int, err error) :
官方文檔中關(guān)于該接口方法的說明:
結(jié)論:
??ReadFile(filename string)方法之所以速度快的原因就是先計(jì)算出file文件的size,在初始化對(duì)應(yīng)size大小的圓螞buff,傳入ReadRead(p []byte) 來讀取字節(jié)流
當(dāng)前文章:go語言dlvguan方文檔 go語言官網(wǎng)文檔
本文URL:http://www.chinadenli.net/article8/ddpsgop.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供小程序開發(fā)、外貿(mào)網(wǎng)站建設(shè)、域名注冊(cè)、標(biāo)簽優(yōu)化、python、關(guān)鍵詞優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)