El título lo resume bastante bien. Estoy probando Go y realmente extraño poder establecer puntos de interrupción y entrar / pasar / salir tanto como quiera dentro de un entorno interactivo. Sé que puedo usar gdb para depurar Go, pero eso es bastante molesto en comparación con el uso de un IDE que puede conectarse a gdb para realizar puntos de ruptura.
Intenté buscar uno y solo pude encontrar complementos o IDE pequeños que tienen resaltado de sintaxis pero sin depuración.
Respuestas:
Actualización : Personalmente, aunque GDB funciona, no soy fanático de usarlo en Go y te hará escupir un poco de sangre. Consulte algunas de las otras respuestas para obtener buenas alternativas.
Sí, por supuesto :)
Go tiene un depurador (GDB)
Aquí está el tutorial oficial sobre cómo usarlo.
Si desea una 'depuración gráfica' (es decir, establecer puntos de interrupción en el editor), algunos IDE le permiten hacerlo (con GDB en segundo plano).
En concreto, Eclipse, LiteIDE y Zeus le permiten establecer puntos de interrupción y depurar desde su entorno de codificación (fuente) . Aquí hay un video sobre cómo hacerlo con Zeus .
fuente
godebug
que fue bastante bueno la última vez que fui.El soporte de GDB para go tiene muchos problemas que el equipo de go no solucionará.
Para obtener más información, lea la publicación de Rob Pike :
Están buscando otras opciones de depuración, pero por ahora no tienen planes concretos. La documentación está desactualizada y el
runtime-gdb.py
script que viene con go 1.2 no funciona para un GDB que fue compilado con soporte para python3 (Ubuntu actual por ejemplo).fuente
Actualización 2017: el proyecto godebug que se menciona a continuación ahora es oficial reemplazado por derekparker / delve .
Respuesta original:
Ahora (marzo de 2015) tiene otro enfoque, basado en instrumentar el código.
mailgun / godebug :
Actualización de junio de 2015:
Si bien puede que no sea tan interactivo como "algunos" podrían esperar, aún se agradece (y tiene la función de "entrar" ).
Consulte " Go tiene un depurador, ¡y es increíble! " (Cloudfare)
ifdef GODEBUG GOPATH="${PWD}" go install github.com/mailgun/godebug GOPATH="${PWD}" ./bin/godebug build -instrument "${GODEBUG}" -o bin/rrdns rrdns
fuente
ACTUALIZAR:
Lo he comprobado y me complace informar que la Versión: 2016.1.3, Compilación: 145.1617.8, Lanzamiento: 5 de junio de 2016 funciona con Delve. Puede descargarlo aquí: https://www.jetbrains.com/idea/download/ . También siga las instrucciones de instalación de Delve aquí: https://github.com/derekparker/delve/tree/master/Documentation/installation
Es un poco escamoso. Justo después de recibir el mensaje de inicio de sesión de OSX, la depuración interactiva comenzó a funcionar. A veces, tengo que depurar un programa .go simple para iniciarlo. Pero funciona y es la mejor experiencia de depuración interactiva para Go que he visto.
POST ORIGINAL:
¿Existe algún depurador interactivo de golang? Si.
¿Existe algún depurador interactivo de golang que valga la pena usar? No.
Configurar GDB en Mac es tedioso, pero factible.
Sin embargo, una vez que empiece a utilizarlo, pronto se dará cuenta de que ha perdido el tiempo instalándolo.
Incluso puede configurar IntelliJ para usarlo.
El único valor que parecen proporcionar IntelliJ, LiteIDE, CGDB, etc. es que puede determinar más rápidamente que el soporte de depuración de GDB para Go es extremadamente deficiente.
Puede usarlo para recorrer algunos códigos de Go, pero intente imprimir el valor de cualquier cosa que no sean valores de variable muy simples y perderá el tiempo deseando un depurador decente.
Aquí hay un ejemplo de lo que sucede cuando intenta imprimir el valor de una estructura de datos de cadena de mapa [cadena] usando CGDB:
(gdb) print params $1 = (github.com/go-martini/martini.Params) 0x15582 <runtime.reentersyscall+450>
... que es completamente inútil.
A continuación, intente esto:
(gdb) print params["UserID"]
... y obtendrá "Error de bus".
Delve ( https://github.com/derekparker/delve ) parece prometedor, ya que está escrito en Go, pero lo maneja usando la consola, no a través de un IDE.
Con mucho gusto pagaría por la versión empresarial de IntelliJ (o cualquier otro IDE) que hizo un trabajo decente al respaldar la depuración interactiva en Go.
A partir de ahora,
fmt.Printf("%v", variable)
es tan bueno como parece.fuente
EDITAR
Respuesta original (noviembre de 2015)
para aquellos que buscan lo último a finales de noviembre de 2015:
ahondar
https://github.com/derekparker/delve
y siga las instrucciones de construcción / configuración:
https://github.com/derekparker/delve/wiki/Building
Obtenga la última versión de IntelliJ (15) o PyCharm (5)
https://www.jetbrains.com/idea/download/
y obtenga el complemento go-lang en el IDE de su elección:
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
Defina su paquete o archivo para ejecutar.
Una vez que haya terminado con la configuración, el icono Reproducir y el icono Depurar ahora deberían estar activos, y puede establecer puntos de interrupción, relojes, etc.
Salud
fuente
Estoy felizmente usando CGDB, un pequeño envoltorio de maldiciones alrededor de GDB.
fuente
IDE DEBUG ON GO ES POSIBLE (OTRA VEZ), ¡REALMENTE FUNCIONA !
Delve funciona bastante bien en Mac OS X y es compatible con el complemento IntelliJ IDEA Go Lang .
Lo probé en Mac OSX, IntelliJ Idea 14, Go 1.5.1, Delve 0.5
Tuve que ejecutar los ciclos habituales de creación de un certificado autofirmado, agregarlo al anillo del sistema, etc. (necesario para ejecutar un depurador en Mac OS X). Al final, configuré un proyecto GO dentro de IntelliJ y me pagaron recuperando las características habituales del depurador IDE +: establecer puntos de interrupción, inspeccionar variables, paso único.
Eso es mucho mejor que imprimir valores para depurar el código.
fuente
Opción uno: GDB https://golang.org/doc/gdb
Ahondar
Visual Studio Code con su complemento go (todavía usa delve).
Yo personalmente uso la opción 3. Para ello necesitarás tener instalado delve .
Este video muestra la depuración en acción: https://youtu.be/uBjoTxosSys?t=16m11s (el video completo es muy interesante).
fuente
Estoy bastante contento con Gogland ( https://www.jetbrains.com/go/ ), que es básicamente Intellij con soporte para Go. Tiene un depurador en funcionamiento que sigue mejorando a medida que lo han desarrollado. Lo he estado usando desde enero de 2017 y ha sido mayormente estable para mí en un MBP de 2016.
fuente