Как использовать отладчик Delve в коде Visual Studio
Я установил расширение Go для VS Code, но не смог заставить его работать.
"dlv debug" работает нормально с терминала.
dlv debug src/github.com/user/hello
launch.json
:
{
"version": "0.2.0",
"configurations": [
{
"name": "Launch",
"type": "go",
"request": "launch",
"mode": "debug",
"program": "${workspaceRoot}",
"env": {},
"args": []
}
]
}
Знаете ли вы, как его настроить?
Ответы
Ответ 1
Для использования отладчика Delve в коде Visual Studio с Golang выполните следующие действия:
( Note: for Windows OS replace all $GOPATH with %GOPATH% )
- Установите последнюю Golang и установите
GOROOT
и GOPATH
- Добавьте
$GOPATH/bin
в переменную среды OS PATH
.
- установить переменную среды:
GO15VENDOREXPERIMENT = 1
- run:
go get github.com/derekparker/delve/cmd/dlv
и убедитесь, что dlv
создан двоичный код $GOPATH/bin
- Установите Код Visual Studio
- Запустите VS Code Quick Open (Ctrl + P), вставьте следующую команду:
ext install Go
и нажмите enter.
- нажмите установить
Rich Go language support for Visual Studio Code
- нажмите
Enable
и перезапустите код Visual Studio
- Внутри
Visual Studio Code
Открыть папку Ctrl + Shift + E, например: $GOPATH\src\hello\
- Затем откройте
hello.go
из этой папки (или создайте новый файл Ctrl + N и сохраните его в этой папке):
package main
import "fmt"
func main() {
fmt.Println("Hello World!")
i := 101
fmt.Println(i)
}
- Затем откройте отладчик Ctrl + Shift + D
- в этой строке:
i := 101
нажмите F9, чтобы установить или переключить контрольную точку.
- Нажмите F5, чтобы начать отладку или запустить приложение, если требуется выбрать среду: выберите
Go
.
- Нажмите F10, чтобы перейти.
- Нажмите F11, чтобы перейти к.
- Нажмите Shift + F11, чтобы выйти.
- Нажмите Shift + F5, чтобы остановить отладку.
- Нажмите Ctrl + Shift + F5, чтобы перезапустить отладочную.
Мой launch.json
нетронутый:
{
"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
}
]
}
Результат:
![введите описание изображения здесь]()
Ответ 2
Этот launch.json
помог мне запустить отладчик Golang в 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:
Если файл /home/your-username/your-project/folder/main.go
открыт в VSCode и
каталог /home/your-username/your-project
- это ваше корневое рабочее пространство, затем
$ {file} = /home/your-username/your-project/folder/main.go
$ {fileDirname} = /home/your-username/your-project/folder
Мои конкретные значения:
$ 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 (если это трудно найти), если при использовании delve
и вы получите ошибку cannot find package
, даже если ваш GOPATH
установлен правильно, проверьте эта ошибка vscode-go, она влияет на MAC OS и Linux, начиная с октября 2017 года.
Решение также опубликовано там:
... добавление GOPATH как env var в свойство env в файле launch.json устраняет проблему
Ответ 4
Содержимое launch.json для gdb и 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
}
]
},
}
]
}