原文地址:https://github.com/derekparker/delve/tree/master/Documentation
安裝
這里提供了支持的所有平臺(操作系統)上安裝Delve的說明。 請注意您必須安裝Go 1.5或更高版本。 此外如果使用Go 1.5,您必須設置GO15VENDOREXPERIMENT = 1,然后再嘗試安裝。
- OSX
在OSX上插入
請使用以下步驟在OSX上構建和安裝DelveVia Homebrew
如果你安裝了HomeBrew,只需運行:$ brew install go-delve/delve/delve
手動安裝
0) 必備條件
確保您具有正確的編譯工具鏈。
這應該是簡單的:
xcode-select --install
1)創建自簽名證書
你必須創建自簽名證書,并使用它簽署二進制文件:
- 打開應用程序“鑰匙串訪問”(/ Applications / Utilities / Keychain Access.app)
- 打開菜單 /Keychain Access/Certificate Assistant/Create a Certificate...
- 選擇一個名稱(在示例中為dlv-cert),將“Identity Type(身份類型)”設置為“Self Signed Root(自簽名根)”,將“Certificate Type(證書類型)”設置為“Code Signing(代碼簽名)”,然后選擇“Let me override defaults(讓我覆蓋默認值)”。 單擊“Continue(繼續)”。 您可能想將預定義的365天期間延長到3650天。
- 單擊“Continue(繼續)”多次,直到進入“Specify a Location For The Certificate(指定證書的位置)”頁面,然后將“Keychain to System(鑰匙串設置為系統)”。
- 如果您不能將證書存儲在“System(系統)”鑰匙扣中,請在“login(登錄)”鑰匙扣中創建,然后將其導出。 然后,您可以將其導入到“System(系統)”鑰匙扣。
- 在鑰匙串中選擇“系統”,你應該找到你的新證書。 使用證書的上下文菜單(不是公鑰或私鑰),選擇“獲取信息”,打開“信任”項,并將“代碼簽名”設置為“始終信任”。
- [至少在Yosemite上:]在鑰匙串中選擇類別Keys - > dlv-cert - >右鍵單擊 - > GetInfo - >Access Control (訪問控制) - >選擇“允許所有應用程序訪問此項目” - >保存更改。
- 您必須退出“鑰匙串訪問”應用程序,才能使用證書并通過終止當前運行的“任務門”進程重新啟動“任務門”服務。 或者,您可以重新啟動計算機。
2)二進制安裝 - 在寫go程序的時候首先創建文件夾$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必須先設置GO15VENDOREXPERIMENT = 1,然后才能繼續安裝。
GO15VENDOREXPERIMENT env var只是選擇進入Go 1.5 Vendor Experiment。(1.6不需要)
所有make命令都假設一個CERT環境變量,其中包含上面創建的證書的名稱。 Makefile還假定GOPATH是單值的,不是冒號分隔的。 makefile只需要幫助促進構建和代碼簽名的過程。
- 運行以下命令:CERT = dlv-cert make install,它將安裝二進制文件并對其進行編碼。
有關更多信息,請參閱此安裝視頻https://www.youtube.com/watch?v=4ndjybtBg74說明
在構建期間取消代碼簽名授權提示
如果在使用自簽名證書運行make時提示您授權,請嘗試以下操作: - 打開應用程序“鑰匙串訪問”(/ Applications / Utilities / Keychain Access.app)
- 雙擊與您的自簽名證書(示例中的dlv-cert)對應的私鑰
- 選擇“Access Control(訪問控制)”選項卡
- 單擊“始終允許這些應用程序訪問”下的[+],然后從Finder對話框中選擇/ usr / bin / codesign
- 點擊“(Save changes)保存更改”按鈕
- 消除“Developer tools access(開發工具訪問)”提示運行delve
如果運行dlv時出現此提示:
"Developer tools access needs to take control of another process for debugging to continue. Type your password to allow this"
嘗試運行DevToolsSecurity -enable以消除提示。 有關更多信息,請參閱man DevToolsSecurity。
- Linux
請使用以下步驟在Linux上構建和安裝Delve
在Linux上有兩種安裝方式。 首先是標準的go get方法:go get github.com/derekparker/delve/cmd/dlv
或者,您可以克隆repo并運行:
$ make install
注意:如果您使用Go 1.5必須先設置GO15VENDOREXPERIMENT = 1,然后才能繼續安裝。 GO15VENDOREXPERIMENT env var只是選擇進入Go 1.5 Vendor Experiment。
- Windows
請使用標準的go get命令在Windows上構建和安裝Delvego get github.com/derekparker/delve/cmd/dlv
注意:如果您使用Go 1.5必須先設置GO15VENDOREXPERIMENT = 1,然后才能繼續安裝。 GO15VENDOREXPERIMENT env var只是選擇進入Go 1.5 Vendor Experiment。
用法
您可以多種方式調用Delve,具體取決于您的使用需求。 Delve使每個嘗試都是用戶友好的,確保用戶必須做最少的工作可能開始調試他們的程序。
請參閱主要使用文檔以進一步探索命令。
命令行界面
命令
命令 | 描述 |
args | 打印函數參數 |
break | 設置一個斷點 |
breakpoints | 打印激活的斷點信息 |
clear | 刪除斷點 |
clearall | 刪除所有的斷點 |
condition | 設置斷點條件 |
continue | 運行到斷點或程序終止 |
disassemble | 拆解器 |
exit | 退出debugger |
frame | 在不同的框架上執行的命令 |
funcs | 打印函數列表 |
goroutine | 顯示或更改當前goroutine |
goroutines | 列出程序的全部goroutines |
help | 打印出幫助信息 |
list | 顯示源代碼 |
locals | 打印局部變量 |
next | 跳到下一行 |
on | 在遇到斷點時執行一個命令 |
print | 評估表達式 |
regs | 打印CPU寄存器的內容 |
restart | 重啟進程 |
set | 更改變量的值 |
source | 執行包含delve命令列表的文件 |
sources | 打印源文件列表 |
stack | 打印堆棧跟蹤 |
step | 單步執行程序 |
step-instruction | 單步單個執行cpu指令 |
thread | 切換到指定的線程 |
threads | 打印每一個跟蹤線程的信息 |
trace | 設置跟蹤點 |
types | 打印類型列表 |
vars | 打印某個包內的(全局)變量 |
API
API文檔
Delve公開了主要可以與Delve編程交互的IDEs和編輯器的一個API接口,以便這些程序使用。 API由終端使用,因此無論新功能如何,都將始終保持最新的鎖定狀態。
使用
為了在“API模式”中運行Delve,只需使用標準命令之一調用,提供--headless標志,如下所示:
$ dlv debug --headless --api-version=2 --log --listen=127.0.0.1:8181
這將以非交互模式啟動調試器,偵聽指定的地址,并啟用日志記錄。 當然最后兩個標志(log listen)是可選的。
或者如果您要將多個客戶端連接到API,也可以指定--accept-multi客戶端標志。
您可以使用connect子命令從Delve本身連接headless調試器:
$ dlv connect 127.0.0.1:8181
這對于遠程調試很有用。
API 接口
Delve已經可以允許多個客戶端/服務器這種方式的架構。因為所有的“業務邏輯”被抽象出實際的客戶端/服務器實現,所有允許容易實現新的API接口。
當前API接口
JSON-RPC
內部文件
TODO(derek parker)
將要做的
這個目錄將包含調試器內部和它如何工作的文檔。
編輯器集成
可以使用以下用于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 來調試代碼

demo.gif
安裝
可以使用apm install go-debug或在設置中搜索go-debug。
安裝delve
查閱https://github.com/derekparker/delve/tree/master/Documentation/installation
綁定的快捷鍵
f5 運行當前包 (dlv debug)
ctrl-f5 測試運行當前包(dlv test)
shift-f5 重新啟動當前的delve會話(r / restart)
f6 停止delve (exit / quit / q)
f8 繼續執行 (c / continue)
f9 切換斷點
f10 到下一個斷電源(n / next)
f11 進入函數 (s / step)
cmd-k cmd-g (mac) / ctrl-k ctrl-g (others) 切換主面板
鏈接
關于slack的golang社區:Gopher Slack| go-plus
問題?請直接在go-plus頻道給我發送消息
已知bugs
- 當一個函數定義兩個(或多個)同名的變量時,delve無法區分它們:locals將打印這兩個變量,print將隨機選擇一個。 參見問題Issue#106。
- Delve目前不支持32位系統。 這通常表現為proc / disasm.go中的編譯器錯誤。 參見問題Issue#20。
- 當Delve使用go之前的版本1.7.0編譯時,不能使用Receiver.Method Name語法在遠程包中的函數上設置斷點。 參見問題Issue#528。