Le titre le résume assez bien. J'essaie Go et je suis vraiment incapable de définir des points d'arrêt et d'intervenir autant que je le souhaite dans un environnement interactif. Je sais que je peux utiliser gdb pour déboguer Go, mais c’est assez gênant comparé à l’utilisation de IDE) qui peut être connecté à gdb pour le point d’arrêt.
J'ai essayé d'en rechercher un et je ne pouvais trouver que des plugins ou de petits IDE ayant une coloration syntaxique mais pas de débogage.
Mise à jour : Personnellement, si GDB fonctionne, je ne suis pas partisan de l'utiliser dans Go et cela vous fera cracher du sang. Découvrez quelques-unes des autres réponses pour trouver de bonnes alternatives.
Oui bien sûr :)
Go a un débogueur (GDB)
Voici le tutoriel officiel sur la façon de l'utiliser.
Si vous souhaitez un "débogage graphique" (c'est-à-dire, définir des points d'arrêt dans l'éditeur), certains IDE vous permettent de le faire (avec GDB en arrière-plan).
En particulier, Eclipse, LiteIDE et Zeus vous permettent tous de définir des points d'arrêt et de déboguer à partir de votre environnement de codage (source) . Voici une vidéo sur la façon de le faire avec Zeus .
Le support de GDB pour go a de nombreux problèmes qui ne seront pas résolus par l'équipe go.
Pour plus d'informations, lisez le posté par Rob Pike :
Bien que nous nous efforcions de conserver les fonctionnalités de base de gdb (traces de pile, valeurs d'impression) sur les plateformes prises en charge, la possibilité d'utiliser le débogueur pour comprendre l'environnement complet d'un programme Go ne fonctionnera probablement jamais, et l'amélioration de la prise en charge de gdb n'est pas une priorité pour l'équipe. .
Ils recherchent d'autres options de débogage mais n'ont pas encore de plans concrets. La documentation est obsolète et le runtime-gdb.py
script fourni avec go 1.2 ne fonctionne pas pour une GDB compilée avec le support python3 (Ubuntu actuel par exemple).
Mise à jour 2017: le projet godebug mentionné ci-dessous est maintenant officiel remplacé par derekparker/delve .
Réponse originale:
Vous avez maintenant (mars 2015) une autre approche, basée sur l’instrumentation du code.
godebug
utilise la génération de code source pour instrumenter votre programme avec des appels de débogage .go tool cover
adopte une approche similaire en matière de couverture de code.
- Lorsque vous exécutez
godebug
, il analyse votre programme, les appels de fonction d’instruments, les déclarations de variable et les lignes d’instruction, et génère le code résultant quelque part (actuellement, stdout ou en place sur vos fichiers d’origine).- Lorsque vous exécutez ce code modifié, en supposant que vous placiez un point d'arrêt quelque part, vous pouvez le parcourir et inspecter les variables.
À venir: évaluez des expressions Go arbitraires et écrivez dans des variables.
Mise à jour juin 2015:
Bien que cela ne soit peut-être pas aussi interactif que "certains" pourraient l'espérer, il est toujours apprécié (et a la fonctionnalité "pas à pas" ).
Voir " Go a un débogueur - et c'est génial! " (Cloudfare)
voici le bit sympa: au lieu de lutter avec une demi-douzaine d'interfaces
ptrace
différentes qui ne seraient pas portables,godebug
réécrit votre code source et injecte des appels de fonction tels quegodebug.Line
sur chaque ligne,godebug.Declare
à chaque déclaration de variable, etgodebug.SetTrace
pour les points d'arrêt (c'est-à-dire partout où vous tapez_ = "breakpoint"
).Je trouve cette solution brillante.
Ce que vous obtenez est un binaire activé pour le débogage (éventuellement multi-compilé) que vous pouvez déposer sur un serveur de transfert, comme vous le feriez avec un fichier binaire standard .Lorsqu'un point d'arrêt est atteint, le programme s'arrête en ligne et vous attend sur stdin.
C'est la philosophie de Go à dépendance binaire unique, zéro dépendance, que nous adorons, appliquée au débogage. Construit partout, s’exécute partout, sans outils ni autorisations sur le serveur.
ifdef GODEBUG
GOPATH="${PWD}" go install github.com/mailgun/godebug
GOPATH="${PWD}" ./bin/godebug build -instrument "${GODEBUG}" -o bin/rrdns rrdns
Le débogage est juste un
make bin/rrdns GODEBUG=rrdns/...
une façon.
MISE À JOUR:
Je l'ai vérifié et je suis heureux de signaler que Version: 2016.1.3, Version: 145.1617.8, Sortie: 5 juin 2016 fonctionne avec Delve! Vous pouvez le télécharger ici: https://www.jetbrains.com/idea/download/ . Suivez également les instructions d’installation de Delve ici: https://github.com/derekparker/delve/tree/master/Documentation/installation
C'est un peu floconneux. Juste après avoir reçu l’invite de connexion OSX, le débogage interactif a commencé à fonctionner. Parfois, je dois déboguer un simple programme .go pour le démarrer. Mais cela fonctionne et constitue la meilleure expérience de débogage interactive pour Go que j'ai vue.
POSTE ORIGINAL:
Existe-t-il un débogueur interactif golang? Oui.
Existe-t-il un débogueur interactif golang qui mérite d'être utilisé? Non
Configurer GDB sur le Mac est fastidieux, mais faisable.
Cependant, une fois que vous aurez commencé à l'utiliser, vous réaliserez rapidement que vous venez de perdre votre temps à l'installer.
Vous pouvez même configurer IntelliJ pour l'utiliser.
La seule valeur que semblent offrir IntelliJ, LiteIDE, CGDB, etc. est que vous pouvez vérifier plus rapidement que la prise en charge du débogage GDB pour Go est extrêmement médiocre.
Vous pouvez l'utiliser pour parcourir un code Go, mais essayez d'imprimer une valeur autre que de très simples valeurs de variable et vous perdrez votre temps à souhaiter un débogueur décent.
Voici un exemple de ce qui se passe lorsque vous essayez d'imprimer la valeur d'une structure de données map [string] string à l'aide de CGDB:
(gdb) print params
$1 = (github.com/go-martini/martini.Params) 0x15582 <runtime.reentersyscall+450>
... qui est complètement inutile.
Ensuite, essayez ceci:
(gdb) print params["UserID"]
... et vous obtiendrez une "erreur de bus".
Delve ( https://github.com/derekparker/delve ) semble prometteur, car il est écrit en Go, mais vous le pilotez à l'aide de la console, pas via un IDE.
Je serais heureux de payer pour la version d'entreprise d'IntelliJ (ou de tout autre IDE) qui effectue un travail correct prenant en charge le débogage interactif dans Go.
À ce jour, fmt.Printf("%v", variable)
est à peu près aussi performant que possible.
EDIT
Le débogueur GO est maintenant un simple plugin dans IntelliJ ou PyCharm, inutile d’installer autre chose. Il suffit de chercher le plug-in Go dans les préférences du plug-in.
Réponse originale (nov. 2015)
pour ceux qui recherchent les dernières nouvelles à compter de la fin novembre 2015:
se plonger
https://github.com/derekparker/delve
et suivez les instructions de construction/installation:
https://github.com/derekparker/delve/wiki/Building
Obtenez les dernières IntelliJ (15) ou PyCharm (5)
https://www.jetbrains.com/idea/download/
et obtenez le plug-in go-lang dans le IDE de votre choix:
Pycharm -> Preference -> plugins -> search for go
current version is Version: 0.10.749
IntelliJ -> Preference -> plugins -> search for go
current version is Version: 0.10.749
Définissez votre package ou fichier à exécuter.
Une fois la configuration terminée, les icônes Lecture et Débogage doivent maintenant être actives et vous pouvez définir les points d'arrêt, les surveillances, etc. comme d'habitude.
À votre santé
J'utilise heureusement CGDB, une petite malédiction autour de GDB.
Première option - GDB https://golang.org/doc/gdb
Code Visual Studio avec son go plugin (utilise toujours delve).
Personnellement, j’utilise l’option 3. Pour cela, vous aurez besoin de delve .
Cette vidéo montre le débogage en action: https://youtu.be/uBjoTxosSys?t=16m11s (toute la vidéo est très intéressante).
IDE DEBUG ON GO IS POSSIBLE (ENCORE DE NOUVEAU), FONCTIONNE EFFICACEMENT !
Delve fonctionne plutôt bien sur Mac OS X et est supporté par IntelliJ IDEAplugin Go Lang .
J'ai testé cela sur Mac OSX, IntelliJ Idea 14, Go 1.5.1, Delve 0.5
Je devais exécuter les boucles habituelles de création d'un certificat auto-signé, de l'ajouter à l'anneau système, etc. (nécessaire pour exécuter un débogueur sous Mac OS X). À la fin, j'ai défini un projet GO dans IntelliJ et j'ai été récompensé pour avoir retrouvé les fonctionnalités habituelles du débogueur IDE +: définition de points d'arrêt, inspection de variables, pas à pas unique.
C'est bien mieux que d'afficher des valeurs pour déboguer du code.
Je suis assez satisfait de Gogland ( https://www.jetbrains.com/go/ ), qui est essentiellement un support Intellij avec Go. Il a un débogueur qui fonctionne de mieux en mieux. Je l'utilise depuis janvier 2017 et il est stable pour la plupart sur un MBP 2016.
Goland est le nom de code d’une nouvelle publicité IDE) de JetBrains destinée à fournir un environnement ergonomique pour le développement de Go.