"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > Configuración de Delve y Air para depurar Golang con VS Code

Configuración de Delve y Air para depurar Golang con VS Code

Publicado el 2024-08-19
Navegar:811

Setting up Delve and Air to debug Golang with VS Code

Extensión de código VS

Busque Go en VS Code Extensions e instálelo.

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

Depurador

Necesitará instalar Delve para realizar la depuración (puntos de interrupción, paso a paso, etc.) en VS Code.

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

Si usaste asdf para instalar Go, profundizar se ubicará en:

~/.asdf/shims/dlv

Es posible que desees ejecutar asdf reshim después de instalar un paquete go.

Recarga en vivo

Dado que GoLang es un lenguaje compilado, el código se compilará en un único ejecutable. Durante el desarrollo, realizar cambios requerirá que recompilemos constantemente, lo que puede ser un proceso manual, especialmente en VS Code.

Usaremos https://github.com/air-verse/air para realizar recargas en vivo por nosotros.

Es una herramienta de línea de comandos que solo necesita ejecutarse una vez dentro de la carpeta de su proyecto para observar los cambios.

Instalación

Instalar el paquete. Suponiendo que tenga la versión 1.22 o superior.

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

Si usaste asdf para instalar Go, el aire se ubicará en:

~/.asdf/shims/air

Inicializa un archivo de configuración air.toml en la raíz de tu proyecto

cd ~/myproject
air init

Editar el comando air.toml [[go build]] a:
- todos: las banderas deben aplicarse a todos los paquetes en los paquetes de compilación
- -N: optimizaciones deshabilitadas para garantizar que el código generado se acerque más al código fuente para facilitar la depuración
- -l: deshabilita la optimización integrada donde las funciones pequeñas se expanden para reducir la sobrecarga de las llamadas a funciones, lo que facilita la depuración
- Razonamiento de Delve Reference

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

[!info]
air se ejecutará con las configuraciones predeterminadas si:

  • El archivo air.toml no es válido
  • ejecútelo en la carpeta de su proyecto ejecutando el comando air

No utilizará su archivo air.toml.

Edite air.toml full_bin para ejecutar el binario compilado con [[Delve]].

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

Esto ejecutará Delve en el puerto 2345.

Ejecute air en la carpeta de su proyecto. Debería ver el siguiente resultado.

> 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

Adjuntar código VS a Delve

En su archivo .vscode/launch.config, agregue lo siguiente:

{
  // 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"
    }
  ]
}

En VS Code Run and Debug (CMD SHIFT D), comience a depurar con Adjuntar al aire

[!info] VS Code no puede conectarse
Si VS Code no puede conectarse, lo más probable es que Delve no se esté ejecutando en el puerto 2345. Intente usar lsof -i :2345 para verificar si dlv se está ejecutando en ese puerto. Si se está ejecutando, deberías ver:

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

Problemas

Go es un lenguaje compilado. Eso significa que el código se compila en un binario y luego se ejecuta. Siempre que realizamos cambios en el código en vscode:

  • el aire estará atento a los cambios
  • reconstruir el binario
  • iniciar Excavación en 2345

Esto significa que vscode se desconectará y deberá volver a conectar vscode para profundizar.

Declaración de liberación Este artículo se reproduce en: https://dev.to/nerdherd/setting-up-golang-on-vs-code-with-debugging-1kbe?1 Si hay alguna infracción, comuníquese con [email protected] para eliminar él
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3