Maison >développement back-end >Golang >Configuration de Delve et Air pour déboguer Golang avec VS Code
Recherchez Go dans VS Code Extensions et installez-le.
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.
É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.
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
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)
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 :
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!