Найдите Go в VS Code Extensions и установите его.
Вам потребуется установить 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
В файле .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:
Это означает, что vscode будет отключен, и вам нужно будет повторно подключить vscode для погружения.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3