原文地址:https://github.com/derekparker/delve/tree/master/Documentation
安裝
這里提供了支持的所有平臺(操作系統(tǒng))上安裝Delve的說明蛹屿。 請注意您必須安裝Go 1.5或更高版本逗扒。 此外如果使用Go 1.5慈省,您必須設(shè)置GO15VENDOREXPERIMENT = 1,然后再嘗試安裝前标。
- OSX
在OSX上插入
請使用以下步驟在OSX上構(gòu)建和安裝Delve
Via Homebrew
如果你安裝了HomeBrew,只需運(yùn)行:
$ brew install go-delve/delve/delve
手動安裝
0) 必備條件
確保您具有正確的編譯工具鏈卖鲤。
這應(yīng)該是簡單的:
xcode-select --install
1)創(chuàng)建自簽名證書
你必須創(chuàng)建自簽名證書码耐,并使用它簽署二進(jìn)制文件:
- 打開應(yīng)用程序“鑰匙串訪問”(/ Applications / Utilities / Keychain Access.app)
- 打開菜單 /Keychain Access/Certificate Assistant/Create a Certificate...
- 選擇一個名稱(在示例中為dlv-cert),將“Identity Type(身份類型)”設(shè)置為“Self Signed Root(自簽名根)”檀夹,將“Certificate Type(證書類型)”設(shè)置為“Code Signing(代碼簽名)”筋粗,然后選擇“Let me override defaults(讓我覆蓋默認(rèn)值)”策橘。 單擊“Continue(繼續(xù))”。 您可能想將預(yù)定義的365天期間延長到3650天娜亿。
- 單擊“Continue(繼續(xù))”多次丽已,直到進(jìn)入“Specify a Location For The Certificate(指定證書的位置)”頁面,然后將“Keychain to System(鑰匙串設(shè)置為系統(tǒng))”买决。
- 如果您不能將證書存儲在“System(系統(tǒng))”鑰匙扣中沛婴,請在“l(fā)ogin(登錄)”鑰匙扣中創(chuàng)建,然后將其導(dǎo)出策州。 然后瘸味,您可以將其導(dǎo)入到“System(系統(tǒng))”鑰匙扣。
- 在鑰匙串中選擇“系統(tǒng)”够挂,你應(yīng)該找到你的新證書旁仿。 使用證書的上下文菜單(不是公鑰或私鑰),選擇“獲取信息”孽糖,打開“信任”項枯冈,并將“代碼簽名”設(shè)置為“始終信任”。
- [至少在Yosemite上:]在鑰匙串中選擇類別Keys - > dlv-cert - >右鍵單擊 - > GetInfo - >Access Control (訪問控制) - >選擇“允許所有應(yīng)用程序訪問此項目” - >保存更改办悟。
- 您必須退出“鑰匙串訪問”應(yīng)用程序尘奏,才能使用證書并通過終止當(dāng)前運(yùn)行的“任務(wù)門”進(jìn)程重新啟動“任務(wù)門”服務(wù)。 或者病蛉,您可以重新啟動計算機(jī)炫加。
2)二進(jìn)制安裝 - 在寫go程序的時候首先創(chuàng)建文件夾$GOPATH/src/github.com/derekparker 并且cd 到c$GOPATH/src/github.com/derekparker目錄下
- clone 這個項目:git clone https://github.com/derekparker/delve.git 并且cd delve
注意:如果您使用Go 1.5必須先設(shè)置GO15VENDOREXPERIMENT = 1,然后才能繼續(xù)安裝铺然。
GO15VENDOREXPERIMENT env var只是選擇進(jìn)入Go 1.5 Vendor Experiment俗孝。(1.6不需要)
所有make命令都假設(shè)一個CERT環(huán)境變量,其中包含上面創(chuàng)建的證書的名稱魄健。 Makefile還假定GOPATH是單值的赋铝,不是冒號分隔的。 makefile只需要幫助促進(jìn)構(gòu)建和代碼簽名的過程沽瘦。
- 運(yùn)行以下命令:CERT = dlv-cert make install革骨,它將安裝二進(jìn)制文件并對其進(jìn)行編碼。
有關(guān)更多信息析恋,請參閱此安裝視頻https://www.youtube.com/watch?v=4ndjybtBg74
說明
在構(gòu)建期間取消代碼簽名授權(quán)提示
如果在使用自簽名證書運(yùn)行make時提示您授權(quán)良哲,請嘗試以下操作:
- 打開應(yīng)用程序“鑰匙串訪問”(/ Applications / Utilities / Keychain Access.app)
- 雙擊與您的自簽名證書(示例中的dlv-cert)對應(yīng)的私鑰
- 選擇“Access Control(訪問控制)”選項卡
- 單擊“始終允許這些應(yīng)用程序訪問”下的[+],然后從Finder對話框中選擇/ usr / bin / codesign
- 點(diǎn)擊“(Save changes)保存更改”按鈕
- 消除“Developer tools access(開發(fā)工具訪問)”提示運(yùn)行delve
如果運(yùn)行dlv時出現(xiàn)此提示:
"Developer tools access needs to take control of another process for debugging to continue. Type your password to allow this"
嘗試運(yùn)行DevToolsSecurity -enable以消除提示助隧。 有關(guān)更多信息臂外,請參閱man DevToolsSecurity。
- Linux
請使用以下步驟在Linux上構(gòu)建和安裝Delve
在Linux上有兩種安裝方式。 首先是標(biāo)準(zhǔn)的go get方法:
go get github.com/derekparker/delve/cmd/dlv
或者漏健,您可以克隆repo并運(yùn)行:
$ make install
注意:如果您使用Go 1.5必須先設(shè)置GO15VENDOREXPERIMENT = 1嚎货,然后才能繼續(xù)安裝。 GO15VENDOREXPERIMENT env var只是選擇進(jìn)入Go 1.5 Vendor Experiment蔫浆。
- Windows
請使用標(biāo)準(zhǔn)的go get命令在Windows上構(gòu)建和安裝Delve
go get github.com/derekparker/delve/cmd/dlv
注意:如果您使用Go 1.5必須先設(shè)置GO15VENDOREXPERIMENT = 1殖属,然后才能繼續(xù)安裝。 GO15VENDOREXPERIMENT env var只是選擇進(jìn)入Go 1.5 Vendor Experiment瓦盛。
用法
您可以多種方式調(diào)用Delve洗显,具體取決于您的使用需求。 Delve使每個嘗試都是用戶友好的原环,確保用戶必須做最少的工作可能開始調(diào)試他們的程序挠唆。
請參閱主要使用文檔以進(jìn)一步探索命令。
命令行界面
命令
命令 | 描述 |
---|---|
args | 打印函數(shù)參數(shù) |
break | 設(shè)置一個斷點(diǎn) |
breakpoints | 打印激活的斷點(diǎn)信息 |
clear | 刪除斷點(diǎn) |
clearall | 刪除所有的斷點(diǎn) |
condition | 設(shè)置斷點(diǎn)條件 |
continue | 運(yùn)行到斷點(diǎn)或程序終止 |
disassemble | 拆解器 |
exit | 退出debugger |
frame | 在不同的框架上執(zhí)行的命令 |
funcs | 打印函數(shù)列表 |
goroutine | 顯示或更改當(dāng)前goroutine |
goroutines | 列出程序的全部goroutines |
help | 打印出幫助信息 |
list | 顯示源代碼 |
locals | 打印局部變量 |
next | 跳到下一行 |
on | 在遇到斷點(diǎn)時執(zhí)行一個命令 |
評估表達(dá)式 | |
regs | 打印CPU寄存器的內(nèi)容 |
restart | 重啟進(jìn)程 |
set | 更改變量的值 |
source | 執(zhí)行包含delve命令列表的文件 |
sources | 打印源文件列表 |
stack | 打印堆棧跟蹤 |
step | 單步執(zhí)行程序 |
step-instruction | 單步單個執(zhí)行cpu指令 |
thread | 切換到指定的線程 |
threads | 打印每一個跟蹤線程的信息 |
trace | 設(shè)置跟蹤點(diǎn) |
types | 打印類型列表 |
vars | 打印某個包內(nèi)的(全局)變量 |
API
API文檔
Delve公開了主要可以與Delve編程交互的IDEs和編輯器的一個API接口,以便這些程序使用嘱吗。 API由終端使用玄组,因此無論新功能如何,都將始終保持最新的鎖定狀態(tài)谒麦。
使用
為了在“API模式”中運(yùn)行Delve俄讹,只需使用標(biāo)準(zhǔn)命令之一調(diào)用,提供--headless標(biāo)志绕德,如下所示:
$ dlv debug --headless --api-version=2 --log --listen=127.0.0.1:8181
這將以非交互模式啟動調(diào)試器患膛,偵聽指定的地址,并啟用日志記錄耻蛇。 當(dāng)然最后兩個標(biāo)志(log listen)是可選的踪蹬。
或者如果您要將多個客戶端連接到API,也可以指定--accept-multi客戶端標(biāo)志臣咖。
您可以使用connect子命令從Delve本身連接headless調(diào)試器:
$ dlv connect 127.0.0.1:8181
這對于遠(yuǎn)程調(diào)試很有用跃捣。
API 接口
Delve已經(jīng)可以允許多個客戶端/服務(wù)器這種方式的架構(gòu)亡哄。因?yàn)樗械摹皹I(yè)務(wù)邏輯”被抽象出實(shí)際的客戶端/服務(wù)器實(shí)現(xiàn)布疙,所有允許容易實(shí)現(xiàn)新的API接口。
當(dāng)前API接口
內(nèi)部文件
TODO(derek parker)
將要做的
這個目錄將包含調(diào)試器內(nèi)部和它如何工作的文檔截型。
編輯器集成
可以使用以下用于delve編輯器的插件:
1. Golang Plugin for IntelliJ IDEA (https://github.com/go-lang-plugin-org/go-lang-idea-plugin)
2. Go for Visual Studio Code (https://github.com/Microsoft/vscode-go#go-for-visual-studio-code)
3. Emacs plugin https://github.com/benma/go-dlv.el/
4. LiteIDE https://github.com/visualfc/liteide
5. Go Debugger for Atom
go-debug
atom 使用delve 來調(diào)試代碼
安裝
可以使用apm install go-debug或在設(shè)置中搜索go-debug宦焦。
安裝delve
查閱https://github.com/derekparker/delve/tree/master/Documentation/installation
綁定的快捷鍵
f5 運(yùn)行當(dāng)前包 (dlv debug)
ctrl-f5 測試運(yùn)行當(dāng)前包(dlv test)
shift-f5 重新啟動當(dāng)前的delve會話(r / restart)
f6 停止delve (exit / quit / q)
f8 繼續(xù)執(zhí)行 (c / continue)
f9 切換斷點(diǎn)
f10 到下一個斷電源(n / next)
f11 進(jìn)入函數(shù) (s / step)
cmd-k cmd-g (mac) / ctrl-k ctrl-g (others) 切換主面板
鏈接
關(guān)于slack的golang社區(qū):Gopher Slack| go-plus
問題波闹?請直接在go-plus頻道給我發(fā)送消息