Как скомпилировать файл и подключиться к процессу VSCode Go build and Attach?

Как одновременно скомпилировать файл(консольное приложение) go build и подключиться к процессу для отладки в VSCode?

Речь об отладке debugging, встроенной в расширение VSCode.

На справочной странице приводится пример отладки предварительно скомпилированного файла.

// tasks.json
"tasks": [
{
  "label": "go: build (debug)",
  "type": "shell",
  "command": "go",
  "args": [
    "build",
    "-gcflags=all=-N -l",
    "-o",
    "${workspaceFolder}/bin/__debug_hello-go.exe",
    "./cmd"
  ],
  "options": {
    "cwd": "${workspaceFolder}"
  }
},
...

// launch.json
"configurations": [
{
  "name": "Launch Package",
  "type": "go",
  "request": "launch",
  "mode": "exec",
  "asRoot": true,
  "console": "integratedTerminal",
  "program": "${workspaceFolder}/bin/__debug_hello-go.exe",
  "preLaunchTask": "go: build (debug)",
},
...

... но такая конфигурация запустит приложение во встроенном терминале.

Для отладки отдельно запущенного приложения требуется запустить *.exe и подсоединиться к процессу:

// tasks.json
...
  // Обновление
  "args": [
    ...
    // Здесь ничего не пришло в голову как в конце добавить запуск
    "&&",
    "start",
    "${workspaceFolder}/bin/__debug_hello-go.exe"

// launch.json
"configurations": [
// Конфигурация для присоединения к запущенному процессу
{
  "name": "Attach to Process",
  "type": "go",
  "request": "attach",
  "mode": "local",
  "processId": "__debug_hello-go.exe",
  // Вот это не работает, при этом VSCode не ругается на невалидный ключ
  "preLaunchTask": "go: build (debug)",
}

Проблема:

  1. В первом случае достаточно нажать одну кнопку F5 и "Launch Package" успешно билдит файл и запускает отладку, НО как выше упоминалось во встроенном терминале.

  2. Вариант "attach" не хочет выполнять "preLaunchTask". Т.е. если отдельно выполнить "go: build (debug)" и потом нажать F5 оно билдится, запускается и работает, но крайне неудобно выполнять несколько действий.

Как все-таки заставить "launch.json > Attach to Process" сперва выполнить "preLaunchTask > tasks.json > go: build (debug)"?


Ответы (0 шт):