«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Настройка Delve и Air для отладки Golang с помощью VS Code

Настройка Delve и Air для отладки Golang с помощью VS Code

Опубликовано 19 августа 2024 г.
Просматривать:288

Setting up Delve and Air to debug Golang with VS Code

Расширение кода VS

Найдите Go в VS Code Extensions и установите его.

  • https://marketplace.visualstudio.com/items?itemName=golang.Go

Отладчик

Вам потребуется установить Delve, чтобы получить возможность отладки (точки останова, пошаговое выполнение и т. д.) в VS Code.

go install github.com/go-delve/delve/cmd/dlv@latest

Если для установки Go вы использовали asdf, delve будет расположен по адресу:

~/.asdf/shims/dlv

Возможно, вам захочется запустить asdf reshim после установки пакета go.

Живая перезагрузка

Поскольку GoLang является компилируемым языком, код будет скомпилирован в один исполняемый файл. Во время разработки внесение изменений потребует от нас постоянной перекомпиляции, которая может выполняться вручную, особенно в VS Code.

Мы будем использовать https://github.com/air-verse/air для перезагрузки в реальном времени.

Это инструмент командной строки, который нужно запустить только один раз в папке проекта, чтобы отслеживать изменения.

Установка

Установить пакет. Предполагается, что у вас установлена ​​версия 1.22 или выше.

go install github.com/air-verse/air@latest

Если для установки Go вы использовали asdf, air будет расположен в:

~/.asdf/shims/air

Инициализируйте файл конфигурации air.toml в корне вашего проекта

cd ~/myproject
air init

Отредактируйте команду air.toml [[go build]] так:
- all: флаги должны применяться ко всем пакетам в пакетах сборки
- -N: отключена оптимизация, чтобы сгенерированный код был ближе к исходному коду для упрощения отладки.
- -l: отключает оптимизацию встраивания, при которой небольшие функции расширяются на месте, чтобы уменьшить накладные расходы на вызовы функций, что упрощает отладку
- Рассуждения из справочника по Delve

- cmd = "go build -o ./tmp/main ."
  cmd = 'CGO_ENABLED=0 go build -gcflags=all="-N -l"-o ./tmp/main .'"'

[!информация]
air будет работать с конфигурациями по умолчанию, если:

  • Файл air.toml недействителен
  • запустите его в папке проекта, выполнив команду air

Он не будет использовать ваш файл air.toml.

Отредактируйте air.toml full_bin, чтобы запустить собранный двоичный файл с помощью [[Delve]].

- full_bin = ""
  full_bin = "dlv exec ./tmp/main --listen=127.0.0.1:2345 --headless=true --api-version=2 --accept-multiclient --continue --log --"

При этом Delve будет запущен через порт 2345.

Запустите air в папке вашего проекта. Вы должны увидеть следующий вывод.

> cd ~/my-project
> air
  __    _   ___  
 / /\  | | | |_) 
/_/--\ |_| |_| \_ v1.52.3, built with Go go1.22.5

mkdir ~/my-project/tmp
watching .
!exclude tmp
building...
running...
API server listening at: 127.0.0.1:2345
2024-07-28T18:47:07 07:00 info layer=debugger launching process with args: [./tmp/main]
2024-07-28T18:47:09 07:00 debug layer=debugger entryPoint 0x1006e8000 machoOff 0x100000000
2024-07-28T18:47:09 07:00 warning layer=debugger debug_frame workaround not applied: function internal/abi.(*RegArgs).IntRegArgAddr (at 0x1006e9070) covered by 0x1006e9070-0x1006e9110
2024-07-28T18:47:09 07:00 debug layer=debugger Adding target 11503 "/Users/alaay/projects/scheduleasy/tmp/main"
2024-07-28T18:47:09 07:00 debug layer=debugger continuing
2024-07-28T18:47:09 07:00 debug layer=debugger ContinueOnce
2024/07/28 18:47:09 Starting server on :5602

Прикрепление кода VS к Delve

В файле .vscode/launch.config добавьте следующее:

{
  // Use IntelliSense to learn about possible attributes.
  // Hover to view descriptions of existing attributes.
  // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Attach to Air",
      "type": "go",
      "request": "attach",
      "mode": "remote",
      "port": 2345,
      "host": "127.0.0.1"
    }
  ]
}

В VS Code Run and Debug (CMD SHIFT D) начните отладку с помощью Attach to Air

[!info] VS Code не удается подключиться
Если VS Code не может подключиться, скорее всего, Delve не работает на порту 2345. Попробуйте использовать lsof -i :2345, чтобы проверить, работает ли dlv с использованием этого порта. Если он запущен, вы должны увидеть:

$ lsof -i :2345
COMMAND   PID  USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
dlv     15464 username    3u  IPv4 0x201bff14586139e3      0t0  TCP localhost:dbm (LISTEN)

Ошибки

Go — компилируемый язык. Это означает, что код компилируется в двоичный файл, а затем выполняется. Всякий раз, когда мы вносим изменения в код в vscode:

  • air будет следить за изменениями
  • пересобрать двоичный файл
  • начать Delve в 2345

Это означает, что vscode будет отключен, и вам нужно будет повторно подключить vscode для погружения.

Заявление о выпуске Эта статья воспроизведена по адресу: https://dev.to/nerdherd/setting-up-golang-on-vs-code-with-debugging-1kbe?1. Если есть какие-либо нарушения, свяжитесь с [email protected], чтобы удалить это
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3