Maison > développement back-end > Golang > le corps du texte

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

王林
Libérer: 2024-08-10 06:49:32
original
860 Les gens l'ont consulté

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
Copier après la connexion

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

~/.asdf/shims/dlv
Copier après la connexion

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
Copier après la connexion

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

~/.asdf/shims/air
Copier après la connexion

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

cd ~/myproject
air init
Copier après la connexion

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 .'"'
Copier après la connexion

[!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 --"
Copier après la connexion

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
Copier après la connexion

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"
    }
  ]
}
Copier après la connexion

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)
Copier après la connexion

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!

source:dev.to
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal