问题
I have installed the Go extension for VS Code, but unable to make it work.
"dlv debug" works alright from the terminal.
dlv debug src/github.com/user/hello
The launch.json
:
{
"version": "0.2.0",
"configurations": [
{
"name": "Launch",
"type": "go",
"request": "launch",
"mode": "debug",
"program": "${workspaceRoot}",
"env": {},
"args": []
}
]
}
Do you know how to set it up?
回答1:
For using Delve debugger in Visual Studio Code with Golang, do the following steps:
( Note: for Windows OS replace all $GOPATH with %GOPATH% )
- Install Latest Golang and set
GOROOT
andGOPATH
- Add
$GOPATH/bin
to your OSPATH
environment variable. - set environment variable:
GO15VENDOREXPERIMENT = 1
- run:
go get github.com/derekparker/delve/cmd/dlv
and make suredlv
binary generated in your$GOPATH/bin
- Install Visual Studio Code
- Launch VS Code Quick Open (Ctrl+P), paste this command:
ext install Go
, and press enter. - click install
Rich Go language support for Visual Studio Code
- click
Enable
and restart Visual Studio Code - Inside
Visual Studio Code
Open Folder Ctrl+Shift+E , e.g.:$GOPATH\src\hello\
- Then Open
hello.go
from that folder (or make new file Ctrl+N and save it on this folder):
package main
import "fmt"
func main() {
fmt.Println("Hello World!")
i := 101
fmt.Println(i)
}
- Then Open Debugger Ctrl+Shift+D
- on this line:
i := 101
press F9 to set or toggle beakpoint. - Press F5 to start debugging or to Run the application, if asked to select environment: select
Go
. - Press F10 to Step Over.
- Press F11 to Step Into.
- Press Shift+F11 to Step Out.
- Press Shift+F5 to Stop Debugging.
- Press Ctrl+Shift+F5 to Restart Debugging.
My launch.json
untouched:
{
"version": "0.2.0",
"configurations": [
{
"name": "Launch",
"type": "go",
"request": "launch",
"mode": "debug",
"remotePath": "",
"port": 2345,
"host": "127.0.0.1",
"program": "${workspaceRoot}",
"env": {},
"args": [],
"showLog": true
}
]
}
Result:
回答2:
This launch.json
worked for me to run the Golang debugger in VSCode:
{
"version": "0.2.0",
"configurations": [
{
"name": "Launch file",
"type": "go",
"request": "launch",
"mode": "auto",
"program": "${file}",
"env": {
"PATH": "/usr/local/go/bin:${fileDirname}"
},
"args": []
}
]
}
VSCode Variables Reference:
If file /home/your-username/your-project/folder/main.go
is open in VSCode and
directory /home/your-username/your-project
is your root workspace, then
${file} = /home/your-username/your-project/folder/main.go
${fileDirname} = /home/your-username/your-project/folder
My specific values:
$GOROOT: /usr/local/go
$GOPATH: /Users/myname/code
${file}: /Users/myname/code/src/github.com/githubName/appName/main.go
${fileDirname}: /Users/myname/code/src/github.com/githubName/appName
回答3:
FTA (in case it is hard to find), if when using delve
and you get cannot find package
error even though your GOPATH
is set correctly, check out this bug of vscode-go, it is affecting both MAC OS and Linux, as of October, 2017.
The solution is posted there as well:
... adding the GOPATH as an env var in the env property in the launch.json file solved the problem
回答4:
Content launch.json for gdb and delve
{
// Используйте IntelliSense, чтобы узнать о возможных атрибутах.
// Наведите указатель мыши, чтобы просмотреть описания существующих атрибутов.
// Для получения дополнительной информации посетите: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "Delve",
"type": "go",
"request": "launch",
"mode": "debug",
"remotePath": "",
"port": 2345,
"host": "127.0.0.1",
"program": "${workspaceRoot}/src/hello/hello.go",
"env": {},
"args": [],
"showLog": true
}
,
{
"type": "gdb",
"request": "launch",
"name": "GDB",
"target": "${workspaceRoot}/src/hello/hello",
"cwd": "${workspaceRoot}",
"linux": {
"MIMode": "gdb",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
},
}
]
}
来源:https://stackoverflow.com/questions/39058823/how-to-use-delve-debugger-in-visual-studio-code