El título prácticamente lo resume todo. Estoy tratando de Ir y yo realmente echo de menos ser capaz de establecer puntos de interrupción y paso en/sobre/hacia fuera tanto como quiero dentro de un entorno interactivo. Sé que puedo usar gdb para depurar Ir, pero que es bastante molesto, en comparación con el uso de un IDE que se pueden conectar a gdb para breakpointing.

He intentado buscar por uno y sólo pudo conseguir plugins o pequeñas IDEs que han resaltado de sintaxis, pero no hay depuración.

  • Para cualquier otra persona que cae en esta pregunta, asegúrese de que usted echa un vistazo a las otras respuestas, no sólo el (la actualmente aceptada) uno sobre GDB

9 Comentarios

  1. 38

    Actualización: Personalmente, mientras GDB funciona yo no soy un fan de su uso en Ir y le hará escupir algo de sangre. Echa un vistazo a algunos de las otras respuestas de buenas alternativas.


    Sí, por supuesto 🙂

    Go tiene un depurador (GDB)

    Aquí es el tutorial oficial sobre cómo utilizarlo.

    Si quieres ‘depuración gráfica’ (es decir, establecer puntos de interrupción en el editor) algunos IDEs permiten hacerlo (con GDB en el fondo).

    En específico, Eclipse, LiteIDE y Zeus permiten establecer puntos de interrupción y de depuración de su entorno de programación (fuente). Aquí está un vídeo sobre cómo hacerlo con Zeus.

    • Como seguimiento, tengo un mac y he encontrado el IntelliJ ir plugin para hacer que el desarrollo sea muy agradable y fácil, pero la LiteIDE es realmente grande en la depuración (aunque no es perfecto, funciona muy bien). Tuve que instalar una actualización de GDB para hacer que funcione en todos, que era una especie de doloroso.
    • Tiene un montón de problemas y no será apoyado por la marcha del equipo en el futuro (aparte de la funcionalidad básica), véase mi respuesta a continuación
    • GDB en ir a la quiebra hace años y no es funcional. Aceptado respuesta es francamente MAL.
    • uhh, las dos primeras líneas son, literalmente, «no usar gdb en ir». He utilizado personalmente godebug que era bastante agradable última vez que me gustaría ir.
    • Tienes razón, pero el título dice «Go» tiene un depurador (gdb)», que en realidad ya no es cierto y es en la actualidad un flaco favor. GDB se utiliza para trabajar con versiones antiguas de golang, tratando de hacer que el trabajo era un gran pan de pita, y en el final, no trabajan y no pueden trabajar. Soy un feliz cachorro con Dwelve, voy a tratar de godebug así.
    • Siéntase libre de publicar una respuesta – esta respuesta, literalmente, comienza con «Personalmente, mientras GDB funciona yo no soy un fan de su uso en Ir y le hará escupir algo de sangre. Echa un vistazo a algunos de las otras respuestas para buenas alternativas.» 🙂

  2. 29

    GDB apoyo para ir tiene un montón de problemas que no se fija por la marcha del equipo.

    Para obtener más información, lea la post by Rob Pike:

    Aunque haremos todo lo posible para mantener básica gdb funcionalidad (pila
    las huellas, la impresión de valores) que trabajan en las plataformas soportadas, la capacidad
    para utilizar el depurador para entender un Ir programa completo del entorno
    probablemente nunca trabajo, y la mejora de la gdb de apoyo no es una prioridad para el
    equipo.

    Que están buscando otras opciones de depuración, pero no tienen planes concretos por ahora.
    La documentación es obsoleta y el runtime-gdb.pysecuencia de comandos que viene con ir 1.2
    no funciona para un GDB que fue compilado con python3 de apoyo (actual Ubuntu por ejemplo).

    • eso no es tranquilizador para un idioma que está empezando a ser adoptado ahora
    • Yo nunca necesite de un depurador en ir. las pruebas de unidad y Printf(«%#v», …) me sirvió de mucho hasta ahora…
    • Nadie necesita un depurador, sin embargo, un buen depurador puede resultar muy útil y más eficiente en la depuración – especialmente en la depuración de fallar las pruebas. Además, los depuradores no alterar el código, mientras que la impresión de las declaraciones de hacer.
    • Desde el GDB docs: «GDB no entiende de Ir a programas de bien. La pila de gestión, roscado y tiempo de ejecución contienen aspectos que difieren bastante de la ejecución del modelo de GDB espera que puedan confundir el depurador, incluso cuando el programa se compila con gccgo. Como una consecuencia, aunque GDB puede ser útil en algunas situaciones, no es una confiable depurador para Ir a los programas, particularmente fuertemente concordantes»
    • ¿Cómo Ir a trabajar con los depuradores? «Hemos hablado un rato acerca de una costumbre Ir depurador, pero no hay uno, sin embargo.» por Russ Cox
    • esa es una cosa FEA cómo Rob Pike pone

  3. 24

    Actualización de 2017: el godebug proyecto menciona a continuación es ahora oficial reemplazado por derekparker/ahondar.


    Original respuesta:

    Ahora (Marzo de 2015) tienen otro enfoque, basado en instrumentar el código.

    mailgun/godebug:

    godebug utiliza fuente la generación de código para instrumentar su programa con la depuración de las llamadas.

    ir herramienta cubierta adopta un enfoque similar al de la cobertura de código.

    • Cuando se ejecuta godebug, analiza su programa, los instrumentos de llamadas de función, declaraciones de variables y líneas de sentencia, y envía el código resultante en algún lugar (en la actualidad stdout o en su lugar sobre los archivos originales).
    • Cuando se ejecuta este código modificado, suponiendo que poner un punto de interrupción en algún lugar, se puede dar un paso a través de ella y de inspeccionar las variables.

    Que viene más adelante: evaluar arbitraria Ir expresiones y escribir a las variables.


    Actualización De Junio De 2015:

    Si bien puede no ser tan interactivo como «algunos» podría esperar, es apreciada (y ha «paso a paso» característica).

    Consulte «Go tiene un depurador—y es impresionante!» (Cloudfare)

    aquí está el poco frío: en lugar de la lucha con la mitad de una docena de diferentes ptrace interfaces que no sería portátiles, godebug vuelve a escribir el código fuente y se inyecta llamadas de función como godebug.Line en cada línea, godebug.Declare en cada declaración de variable, y godebug.SetTrace para los puntos de interrupción (es decir, donde quiera que tipo de _ = "breakpoint").

    Esto me parece una solución genial.

    Lo que se obtiene de ella es un (posiblemente de la cruz-compilado) habilitada la depuración binarios que se pueden colocar en un servidor de ensayo tal como lo haría con un regular binario.

    Cuando un punto de interrupción es alcanzado, el programa se detendrá en línea y esperar a que en la entrada estándar.

    Es el único binario, cero dependencias de la filosofía de Ir que nos encanta aplicados a la depuración. Se basa en todas partes, corre por todas partes, sin necesidad de herramientas o permisos en el servidor.

    ifdef GODEBUG  
        GOPATH="${PWD}" go install github.com/mailgun/godebug
        GOPATH="${PWD}" ./bin/godebug build -instrument "${GODEBUG}" -o bin/rrdns rrdns

    De depuración es sólo un make bin/rrdns GODEBUG=rrdns/... de distancia.

    • Godebug ahora es obsoleto y se recomienda el uso de Profundizar en su lugar
    • Gracias. He actualizado la respuesta en consecuencia.
    • Tratando de profundizar, parece funcionar bastante bien. Me parece que esta respuesta de un decente herramienta de código abierto hace que la cuestión de menos «fuera de tema». Puedo obtener no querer tasa cerrado herramientas. Tal vez la pregunta debe ser refrased, pero llegué a escuchar la búsqueda de alternativas a la gdb después de encontrarla (gdb) no es muy recomendable para ir.
  4. 15

    ACTUALIZACIÓN:

    He comprobado y estoy feliz de informar que la Versión: 2016.1.3, Construir: 145.1617.8, Publicado: 5 de junio de 2016 trabaja con Ahondar! Usted puede descargar aquí: https://www.jetbrains.com/idea/download/. También seguir la Ahondar instrucciones de instalación aquí: https://github.com/derekparker/delve/tree/master/Documentation/installation

    Es un poco escamosa. Justo después de que consiguiera el OSX símbolo de inicio de sesión de la depuración interactiva comenzó a trabajar. A veces, tengo que depurar un simple .vaya programa para poner en marcha la misma. Pero funciona, y es el mejor depuración interactiva la experiencia de Ir que he visto.

    POST ORIGINAL:

    Cualquier golang depurador interactivo existen?
    Sí.

    Cualquier golang depurador interactivo, que es digno de usar, existen?
    No.

    La configuración de GDB en el mac es tedioso, pero factible.

    Sin embargo, una vez que usted comienza a usarlo pronto te das cuenta de que usted acaba de perder su tiempo de la instalación.

    Usted puede incluso configurar IntelliJ usarlo.

    El único valor que IntelliJ, LiteIDE, CGDB, etc. parece que aportan es que puede determinar rápidamente que GDB soporte de depuración para Ir es extremadamente pobre.

    Se puede utilizar para el paso a través de algunos Ir de código, pero intente imprimir el valor de otra cosa que de muy sencilla los valores de la variable y estarás desperdiciando tu tiempo deseando que por un buen depurador.

    He aquí un ejemplo de lo que sucede cuando intenta imprimir el valor de un mapa[string]cadena de estructura de datos utilizando CGDB:

    (gdb) print params
    $1 = (github.com/go-martini/martini.Params) 0x15582 <runtime.reentersyscall+450>

    …lo que es completamente inútil.

    A continuación, intente esto:

    (gdb) print params["UserID"]

    …y obtendrá un «error de Bus».

    Profundizar (https://github.com/derekparker/delve) se ve prometedor, ya que está escrito en Ir, pero la unidad es el uso de la consola, no a través de una IDE.

    Me volvería a pagar por la versión enterprise de IntelliJ (o cualquier otro IDE) que hizo un trabajo decente apoyo a la depuración interactiva en Ir.

    A partir de ahora, fmt.Printf("%v", variable) es tan bueno como se pone.

    • Ya no más! anticuado respuesta.
    • mailgun/godebug es una gran mejora; es digno de usar. Sin embargo, lo que sería muy mucho la pena es el uso de un IDE que tenía un enfoque integrado, en el depurador interactivo. La depuración de la consola es una reminiscencia de la depuración en los años 80. La adición de instrumentación para mi código funciona, pero es un poco intrusivo. Prefiero solo (onu), haga clic en una fila de código (de la onu)establecer un punto de interrupción.
    • Voy a repetir… dvelve depurador + intelliJ idea IDE.!
    • Hey user4839438, acabo de ver tu post. Va a probar. Si que funciona, sería sin duda vale la pena pagar cualquier JetBrains actualización de tarifas. Y no es que me importa a mí, pero he oído que la Ahondar depurador supuestamente funciona en MS Visual Studio. Consulte marketplace.visualstudio.com/items/lukehoban.Go
    • He comprobado y estoy feliz de informar que la Versión: 2016.1.3, Construir: 145.1617.8, Publicado: 5 de junio de 2016 trabaja con Ahondar! Usted puede descargar aquí: jetbrains.com/idea/download. También seguir la Ahondar instrucciones de instalación aquí: github.com/derekparker/delve/tree/master/Documentation/…
  5. 9

    EDITAR

    El IR depurador es ahora un simple plugin en IntelliJ o PyCharm, sin necesidad de
    para instalar cualquier otra cosa. Sólo tienes que buscar el Ir plugin en el plugin
    las preferencias.

    Respuesta Original (Noviembre de 2015)

    para aquellos que buscan la última a finales de Noviembre de 2015:

    obtener profundizar

    https://github.com/derekparker/delve

    y siga el build /instrucciones de instalación:

    https://github.com/derekparker/delve/wiki/Building

    Obtener la última IntelliJ (15) o PyCharm (5)

    https://www.jetbrains.com/idea/download/

    y obtener el go-lang-plugin 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
    1. La instalación de un nuevo proyecto, o la Importación de un proyecto.
    2. Instalación de Ir SDK como se le pide
    3. De instalación de la biblioteca (por lo general en GOROOT/src
    4. La instalación de una carrera de configuración de la Aplicación esquina superior derecha por el ‘play’ icono:
    5. Editar Configuraciones -> haga clic en+,- > Ir de la Aplicación

    Definir paquete o archivo a ejecutar.

    Una vez hecho con el programa de instalación, el icono de Play y el icono de Depuración debe ahora ser activo, y se puede establecer el punto de interrupción, relojes, etc… como de costumbre.

    Saludos

    • evaluar/reloj no funciona para mí: no se pudo encontrar el símbolo de valor para… Podría resolver esto para usted ?
    • ver y evaluar parecen funcionar muy bien para mí, en PyCharm 5.0.3 CE así como IntelliJ IDEA 15.0.2
    • Usted realmente no necesita construir profundizar, el plugin viene con la incluida automáticamente.
    • es esta reciente? Cuando he intentado, que había tenido al ir a instalar el plugin de un rato, he actualizado pero no funcionó hasta que he construido profundizar.
    • profundizar ha sido enviado con el plugin desde que fue integrado, que es alrededor de 3 meses. Pero sólo funciona en Linux & Mac OS X, tanto de 64 bits.
  6. 7

    IDE DE DEPURACIÓN DE IR ES POSIBLE (DE NUEVO), EN REALIDAD FUNCIONA!

    Profundizar funciona bien en Mac OS X y es apoyado por IntelliJ IDEA Ir Lang plugin.

    He probado que en Mac OSX, IntelliJ Idea, 14 De Ir 1.5.1, Profundizar 0.5

    Tuve que correr a través de los habituales circuitos de la creación de un certificado autofirmado, añadiendo que el sistema de anillo, etc (necesario para ejecutar un depurador en Mac OS X).
    Al final, me puse un VAN del proyecto dentro de IntelliJ y fue pagado en la recuperación de la habitual IDE+características del depurador: establecer puntos de interrupción, inspeccionar variables, paso a paso.

    Que manera mejor que la impresión de valores en orden a la depuración de código.

    • Puede usted explicar cómo se configura con IntelliJ? El depurador debe ejecutar como un extremo de HTTP, ¿no?
    • no importa… que se encuentra el docs, etc… pero al parecer requiere la última versión de PyCharm o IntelliJ a trabajar fuera de la caja.
    • Yo no hice nada especial, acabo de instalar Dvelve y intelliJ 14, todavía funciona correctamente con IntelliJ 15. Acerca de las versiones anteriores: no sé.
  7. 7
    1. Opción uno – GDB https://golang.org/doc/gdb

    2. Profundizar

    3. El Código De Visual Studio con su ir plugin (todavía utiliza profundizar).

    Yo personalmente uso la opción 3. Por lo que se necesita para tener profundizar instalado.

    Este video muestra la depuración en acción: https://youtu.be/uBjoTxosSys?t=16m11s (todo el video, es muy interesante).

    • Profundizar se está quedando atrás, pero aún mejor que otros de la OMI.
    • Este OMI es la mejor respuesta. Opción #3 es también una plataforma múltiple de la solución. Ahondar tiene algunas limitaciones, pero básico de depuración visual funciona bastante bien.
  8. 1

    He sido muy feliz con Gogland (https://www.jetbrains.com/go/) que es básicamente Intellij con Ir a apoyar. Tiene un trabajo Depurador que sigue mejorando como lo ha sido el desarrollo de esta. Yo he estado usando desde enero de 2017 y ha sido en su mayoría estable para mí en una 2016 MBP.

    Goland es el nombre en clave de un nuevo comercial de IDE por JetBrains destinadas a
    proporcionar un ambiente ergonómico para Ir de desarrollo.

    • Muy bonito! LiteIDE ha sido un poco … demasiado la luz. Me encanta IntelliJ y se mira esto.

Dejar respuesta

Please enter your comment!
Please enter your name here