Как использовать отладчик 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
                }
            ]
        },
    }
]

}