"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Configuration de Delve et Air pour déboguer Golang avec VS Code

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

Publié le 2024-08-19
Parcourir:838

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, étape par étape, 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, en particulier 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, l'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 développées pour réduire la surcharge des appels de fonction, facilitant ainsi le débogage
- Raisonnement à partir de la référence Delve

- 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 à 2345

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

Déclaration de sortie Cet article est reproduit sur : https://dev.to/nerdherd/setting-up-golang-on-vs-code-with-debugging-1kbe?1 En cas de violation, veuillez contacter [email protected] pour supprimer il
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3