go get -u github.com/go-delve/delve/cmd/dlv
linux
方式一: go get -u github.com/go-delve/delve/cmd/dlv
方式二git
$ git clone https://github.com/go-delve/delve.git $GOPATH/src/github.com/go-delve/delve $ cd $GOPATH/src/github.com/go-delve/delve $ make install
注意: 若果你go版本爲1.5須要設置
GO15VENDOREXPERIMENT=1
$ go get -u github.com/go-delve/delve/cmd/dlv
執行上述代碼前,確保你電腦上有編譯工具github
ctrl+shift+p
輸入 Debug: Open launch.json
打開 launch.json
文件,若是第一次打開,會新建一個配置文件,默認配置內容以下json
{ "version": "0.2.0", "configurations": [ { "name": "Launch", "type": "go", "request": "launch", "mode": "auto", "program": "${fileDirname}", "env": {}, "args": [] } ] }
常見屬性以下windows
屬性 | 介紹 |
---|---|
name | 調試界面下拉選擇項的名稱 |
type | 設置爲go無需改動,是 vs code 用於計算調試代碼須要用哪一個擴展 |
mode | 能夠設置爲 auto , debug , remote , test , exec 中的一個 |
program | 調試程序的路徑(絕對路徑) |
env | 調試時使用的環境變量。例如:{ "ENVNAME": "ENVVALUE" } |
envFile | 包含環境變量文件的絕對路徑,在 env 中設置的屬性會覆蓋 envFile 中的配置 |
args | 傳給正在調試程序命令行參數數組 |
showLog | 布爾值,是否將調試信息輸出 |
logOutput | 配置調試輸出的組件(debugger , gdbwire , lldbout , debuglineerr , rpc ),使用,分隔, showLog 設置爲 true 時,此項配置生效 |
buildFlags | 構建 go 程序時傳給 go 編譯器的標誌 |
remotePath | 遠程調試程序的絕對路徑,當 mode 設置爲 remote 時有效 |
若是須要使用構建標記(e.g. go build -tags=whatever_tag)在參數 buildFlags
裏寫入 -tags=whatever_tag"
便可,支持多標籤,使用單引號將標籤包圍,例如: "-tags='first_tag second_tag third_tag'"
api
能夠在 launch.json
文件中,使用 Go
關鍵詞調出 debug
配置項的代碼片斷。數組
{ "name": "Launch file", "type": "go", "request": "launch", "mode": "auto", "program": "${file}" }
{ "name": "Launch test function", "type": "go", "request": "launch", "mode": "test", "program": "${workspaceFolder}", "args": [ "-test.run", "MyTestFunction" ] }
{ "name": "Launch test package", "type": "go", "request": "launch", "mode": "test", "program": "${workspaceFolder}" }
{ "name": "Launch executable", "type": "go", "request": "launch", "mode": "exec", "program": "absolute-path-to-the-executable" }
遠程調試須要在服務器上期一個無頭的 Delve
服務
例如:服務器
$ dlv debug --headless --listen=:2345 --log --api-version=2
若是須要傳給參數到程序中則須要將參數傳入到 Delve
服務中
例如:less
dlv debug --headless --listen=:2345 --log -- -myArg=123
launch.json
配置以下:工具
{ "name": "Launch remote", "type": "go", "request": "launch", "mode": "remote", "remotePath": "服務器調試文件的目錄(絕對路徑)", "port": 2345, "host": "127.0.0.1", "program": "本地調試文件所在的目錄(絕對路徑)", "env": {} }
host
和 port
修改 Delve
服務所在的服務器ip和其監聽的端口號。remotePath
應該配置爲調試文件的絕對路徑program
須要配置本地機器文件所在的絕對路徑,是 remotePath
的一個副本配置完成後,點擊調試按鈕,VS Code
將會項遠程的 dlv
服務發出調試指令,而不是使用本機的 dlv
實例。