Maison >développement back-end >Golang >Configuration de Delve et Air pour déboguer Golang avec VS Code

Configuration de Delve et Air pour déboguer Golang avec VS Code

王林
王林original
2024-08-10 06:49:32872parcourir

Setting up Delve and Air to debug Golang with VS Code

Extension de code VS

Recherchez Go dans VS Code Extensions et installez-le.

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

Débogueur

Vous devrez installer Delve pour obtenir le débogage (points d'arrêt, pas à pas, etc.) dans VS Code.

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

Si vous avez utilisé asdfpour installer Go, Delve se trouvera dans :

~/.asdf/shims/dlv

Vous souhaiterez peut-être exécuter asdf reshim après avoir installé un package go.

Rechargement en direct

Étant donné que GoLang est un langage compilé, le code sera compilé en un seul exécutable. Pendant le développement, apporter des modifications nous obligera à recompiler constamment, ce qui peut être un processus manuel, notamment dans VS Code.

Nous utiliserons https://github.com/air-verse/air pour effectuer le rechargement en direct pour nous.

Il s'agit d'un outil de ligne de commande qui ne doit être exécuté qu'une seule fois dans votre dossier de projet pour surveiller les modifications.

Installation

Installez le package. En supposant que vous ayez la version 1.22 ou supérieure.

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

Si vous avez utilisé asdf pour installer Go, air sera situé dans :

~/.asdf/shims/air

Initialisez un fichier de configuration air.toml à la racine de votre projet

cd ~/myproject
air init

Modifiez la commande air.toml [[go build]] en :
- all : les indicateurs doivent être appliqués à tous les packages dans les packages de build
- -N : optimisations désactivées pour garantir que le code généré soit plus proche du code source pour un débogage plus facile
- -l : désactive l'optimisation en ligne où les petites fonctions sont étendues pour réduire la surcharge des appels de fonction, ce qui facilite le débogage
- Raisonnement de Delve Reference

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

[!info]
air fonctionnera avec les configurations par défaut si :

  • Le fichier air.toml n'est pas valide
  • exécutez-le dans votre dossier de projet en exécutant la commande air

Il n'utilisera pas votre fichier air.toml.

Modifiez air.toml full_bin pour exécuter le binaire construit avec [[Delve]].

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

Cela exécutera Delve sur le port 2345.

Exécutez Air dans votre dossier de projet. Vous devriez voir le résultat suivant.

> 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

Attacher du code VS à Delve

Dans votre fichier .vscode/launch.config, ajoutez ce qui suit :

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

Dans VS Code Run and Debug (CMD + SHIFT + D), démarrez le débogage avec Attach to Air

[!info] VS Code impossible de se connecter
Si VS Code ne parvient pas à se connecter, il est fort probable que Delve ne s'exécute pas sur le port 2345. Essayez d'utiliser lsof -i :2345 pour vérifier si dlv s'exécute sur ce port. S'il est en cours d'exécution, vous devriez voir :

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

Des pièges

Go est un langage compilé. Cela signifie que le code est compilé en binaire puis exécuté. Chaque fois que nous apportons des modifications au code dans vscode :

  • l'air surveillera les changements
  • reconstruire le binaire
  • démarrez Delve à 23h45

Cela signifie que le vscode sera déconnecté et que vous devrez rattacher le vscode pour approfondir.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn