¿Existe una GUI de C ++ gdb para Linux? [cerrado]

210

Brevemente: ¿Alguien sabe de una GUI para gdb que lo ponga a la par o cerca del conjunto de características que obtiene en la versión más reciente de Visual C ++?

En detalle: como alguien que ha pasado mucho tiempo programando en Windows, uno de los obstáculos más grandes que he encontrado cada vez que tengo que codificar C ++ en Linux es que depurar cualquier cosa usando la línea de comandos gdb me lleva varias veces más de lo que lo hace en Visual Studio, y no parece estar mejorando con la práctica. Algunas cosas son más fáciles o más rápidas de expresar gráficamente.

Específicamente, estoy buscando una GUI que:

  • Maneja todos los elementos básicos como pasar y entrar en el código, ver variables y puntos de interrupción
  • Comprende y puede mostrar el contenido de tipos de datos C ++ complejos y anidados
  • No se confunde y, de preferencia, puede avanzar de manera inteligente a través de estructuras de datos y códigos con plantillas mientras muestra información relevante como los tipos de parámetros
  • Puede manejar aplicaciones de subprocesos y cambiar entre diferentes subprocesos para recorrer o ver el estado de
  • Puede manejar adjuntar a un proceso ya iniciado o leer un volcado de núcleo, además de iniciar el programa en gdb

Si tal programa no existe, entonces me gustaría escuchar sobre las experiencias que la gente ha tenido con programas que cumplen al menos algunos de los puntos. ¿Alguien tiene alguna recomendación?

Editar:
enumerar las posibilidades es excelente, y tomaré lo que pueda obtener, pero sería aún más útil si pudiera incluir en sus respuestas:
(a) Si realmente ha utilizado esta GUI o no, y si es así , qué comentarios positivos / negativos tiene al respecto.
(b) Si sabe, cuáles de las características mencionadas anteriormente son / no son compatibles

Las listas son fáciles de encontrar, sitios como este son geniales porque puedes tener una idea de las experiencias personales de las personas con las aplicaciones.

HappyDude
fuente
21
+1 para "Sitios como este son geniales porque puedes hacerte una idea de las experiencias personales de las personas". Demasiadas personas hoy en día solo hacen un volcado de la lista que, en mi humilde opinión, pierde completamente el punto.
kizzx2
1
Sobre ingeniería inversa: reverseengineering.stackexchange.com/questions/1392/…
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功
Vea esta lista de front- end de gdb aquí: sourceware.org/gdb/wiki/GDB%20Front%20Ends , y pruebe el primero de la lista. Parece muy prometedor y moderno y es multiplataforma ya que está basado en el navegador: gdbgui.com .
Gabriel Staples

Respuestas:

55

No encontrará nada superpuesto a GDB que pueda competir con la potencia bruta del depurador de Visual Studio. Es demasiado poderoso, y está demasiado bien integrado dentro del IDE.

Para una alternativa de Linux, prueba DDD si lo tuyo es el software libre.

Vicent Marti
fuente
2
WinDBG es muy superior a lo que proporciona Visual Studio. El depurador de Visual Studio se encuentra en la parte superior de la misma arquitectura que WinDBG. Dicho esto, GDB no tiene nada que preguntar al compararlo con Windbg. Un depurador gráfico que sea mejor que DDD sería genial. Eclipse CDT es una buena alternativa. Creo que había una interfaz de usuario de KDE
bigmonachus
114
Oh mira. Una respuesta que hace un reclamo sin respaldarlo en absoluto. También me parece extraño que la respuesta que no responde a la pregunta haya sido aceptada.
alternativa
3
Para cualquiera que venga en busca de una respuesta real, sepa que ddd es basura. La mejor GUI de depurador para Linux que he encontrado es IDA, que no es software libre.
bkconrad
1
Responda la pregunta lo mejor posible o no diga nada. Después de haber usado ambos, Visual Studio tiene más funciones, pero DDD es lo suficientemente bueno como para que no me pierda VS. Lamentablemente, DDD está mostrando su edad.
Alan De Smet
66
Esta publicación necesita ser actualizada / mejorada. Qt Creator es impresionante, a la par con Visual Studio.
vharron
85

Eclipse CDT proporcionará una experiencia comparable al uso de Visual Studio. Utilizo Eclipse CDT a diario para escribir código y depurar procesos locales y remotos.

Si no está familiarizado con el uso de un IDE basado en Eclipse, la GUI tardará un poco en acostumbrarse. Sin embargo, una vez que comprenda las ideas de la GUI que son exclusivas de Eclipse (por ejemplo, una perspectiva), usar la herramienta se convierte en una experiencia agradable.

Las herramientas CDT proporcionan un indexador C / C ++ decente que le permite encontrar rápidamente referencias a métodos en su base de código. También proporciona una buena herramienta de expansión de macros y soporte de refactorización limitado.

Con respecto al soporte para la depuración, CDT puede hacer todo en su lista con la excepción de leer un volcado del núcleo (puede soportar esto, pero nunca he intentado usar esta función). Además, mi experiencia con el código de depuración utilizando plantillas es limitada, por lo que no estoy seguro de qué tipo de experiencia proporcionará CDT a este respecto.

Para obtener más información sobre la depuración con Eclipse CDT, puede consultar estas guías:

Jon Ball
fuente
10
Se admiten los volcados de núcleo. (Se conoce como depurador postmortem.)
Josh Kelley
He tenido una mejor experiencia en la depuración de Eclipse CDT que en Visual Studios. Sin embargo, no le he dado demasiada oportunidad al MSVC.
notlesh
3
Creo que QtCreator debería mencionarse junto con Eclipse, ya que es comparable.
nonsensickle
78

gdb -tui funciona bien si quieres algo GUI-ish, pero aún basado en caracteres.


fuente
45
También puede ingresar al modo TUI (interfaz de usuario de texto) mientras está en gdb utilizando el comando '-'. Volviendo al símbolo del sistema es Ctrl-X Ctrl-A. Mientras está en modo TUI, arriba, abajo, izquierda y derecha se mueven a través de la fuente. Use Ctrl-P, Ctrl-N, Ctrl-F y Ctrl-B para navegar en el historial de la línea de comandos.
Ben Combee
Esto es exactamente lo que estaba buscando. El poder de la línea de comando gdb con algunas vistas útiles que se actualizan a medida que me muevo.
Kevin Cox
77
Un .gdbinit en esteroides le ofrece una GUI basada en caracteres realmente impresionante, con color: github.com/cyrus-and/gdb-dashboard
cs01
Me gusta bastante gdb-dashboard pero también tengo que mencionar voltron .
nonsensickle
3
@Barry gracias. Para cualquier persona curiosa, aquí hay un enlace: github.com/cs01/gdbgui . Tiene pantalla de estructura de datos similar a DDD, una arquitectura cliente / servidor para depurar fácilmente máquinas remotas sin reenvío de X es necesario, y la capacidad para explorar variables complejas, etc ..
CS01
47

Echa un vistazo a Nemiver C / C ++ Debugger . Es fácil de instalar en Ubuntu (Herramientas para desarrolladores / Depuración).

Actualización: nuevo enlace.

Sergey Shandar
fuente
Absolutamente fabuloso , también compatible con apt: 'apt-get install nemiver'. Mi única objeción es que la construcción desde el repositorio falló debido a un 'No se encontró el paquete gconf-2.0'.
J Evans
la interfaz es bastante clara y buena para leer, pero a veces se bloquea al usar las capacidades de la interfaz v0.9.6. También acepta parámetros de aplicación depurados, lo que todavía no puedo dejar que ddd haga.
Aquarius Power
También disponible en Fedora 30 (al menos). Acabo de encontrarme con esta pregunta y nemiver.
user3236841
31

Qt Creator parece algo bueno. Un colega me mostró una forma de configurarlo para la depuración:

  • Cree un nuevo proyecto, "Importar proyecto basado en Makefile".
  • Apúntelo a su carpeta de proyecto raíz (indexará las fuentes debajo de él, y es impresionantemente rápido).
  • Vaya a la configuración del proyecto y agregue una configuración de ejecución, luego especifique el ejecutable que desea depurar y sus argumentos.
  • Qt Creator parece insistir en construir su proyecto antes de depurarlo. Si no quiere eso, o no usa make, simplemente vaya a proyectos -> build (panel izquierdo), luego, en el panel derecho en "Build Steps", elimine todos los pasos, incluido el paso por defecto cuando Tú creaste el proyecto.

Puede parecer un poco demasiado trabajo para depurar una aplicación que ya había compilado, pero vale la pena. El depurador muestra subprocesos, pilas y variables locales de forma similar a Visual Studio e incluso utiliza muchos de los mismos métodos abreviados de teclado. Parece manejar bien las plantillas, al menos std :: string y std :: map. Parece que se admite la conexión a procesos existentes y volcados de núcleo, aunque todavía no lo he probado.

Tenga en cuenta que lo usé por menos de una hora ahora, pero estoy impresionado hasta ahora.

Alma de hombre
fuente
29

Odio la idea del desarrollo de Windows, pero el depurador VC ++ es uno de los mejores que he visto. No he encontrado una interfaz gráfica de usuario que se acerque a la VC.

GDB es increíble una vez que realmente te acostumbras. Úselo con suficiente enojo y se volverá muy competente. Puedo recorrer un programa haciendo todas las cosas que enumeraste sin mucho esfuerzo. Me tomó alrededor de un mes sufrir por un enlace SSH a un servidor remoto antes de que yo fuera competente. Aunque nunca volvería.

DDD es realmente poderoso, pero tenía muchos errores. Me pareció que se congelaba con frecuencia cuando recibía mensajes de GDB de que no se asimilaba. Es bueno porque tiene una ventana de interfaz gdb para que pueda ver lo que está sucediendo y también interactuar con gdb directamente. DDD no se puede usar en una sesión X remota en mi entorno (un problema real, ya que estoy sentado en un cliente ligero cuando hago desarrollo de Unix) por alguna razón, así que está fuera para mí.

KDevelop siguió el estilo típico de KDE y expuso TODO al usuario. Tampoco tuve suerte al depurar programas que no son de KDevelop en KDevelop.

El Gnat Programming Studio (GPS) es realmente un buen front-end para GDB. No solo administra los proyectos de Ada, por lo que vale la pena probarlo si necesita un depurador.

Podrías usar Eclipse, pero es bastante pesado y muchas personas experimentadas de Unix con las que he trabajado (incluido yo) no se preocupan mucho por su interfaz, que no solo STFU y se apartará de tu camino. Eclipse también parece ocupar mucho espacio y correr como un perro.

Adam Hawes
fuente
2
Solo quería conectar mi proyecto, gdbgui ( github.com/cs01/gdbgui ). Es una arquitectura cliente / servidor, por lo que funciona bien depurando máquinas remotas sin necesidad de una sesión X. También tiene una terminal para interactuar directamente con GDB, y tiene imágenes para mostrar estructuras de datos, similares a DDD.
cs01
Comparaciones con pros y contras según la experiencia. Justo lo que necesita esta pregunta. ty
Heath Raftery
27

Yo uso cgdb, simple y útil

bacalao
fuente
16

Uso mucho DDD, y es bastante poderoso una vez que aprendes a usarlo. Una cosa que diría es que no lo use sobre X sobre la WAN porque parece hacer muchas actualizaciones de pantalla innecesarias.

Además, si no está emparejado con GDB y no le importa gastar un poco de dinero, entonces probaría TotalView. Tiene una curva de aprendizaje un poco pronunciada (definitivamente podría ser más intuitiva), pero es el mejor depurador de C ++ que he usado en cualquier plataforma y puede ampliarse para introspectar sus objetos de manera personalizada (lo que le permite ver un Lista STL como una lista real de objetos, y no como un grupo de miembros confusos de datos internos, etc.)

Nick Bastin
fuente
No puedo hacer que DDD funcione sobre X remoto en absoluto; simplemente se bloquea con errores de Xlib en mi cliente ligero :(
Adam Hawes
Totalview parece una alternativa viable. No considero que DDD sea mejor que la interfaz gdb curses.
deft_code
8

Echa un vistazo al proyecto Eclipse CDT. Es un complemento para Eclipse orientado al desarrollo de C / C ++ e incluye una perspectiva de depuración bastante rica en funciones (que detrás de escena usa GDB). Está disponible en una amplia variedad de plataformas.

usuario14636
fuente
7

Similar a la interfaz eclipse gdb es la interfaz de emacs, estrechamente vinculada al IDE de emacs. Si ya trabaja con emacs, le gustará:

GDB Emacs Frontend

Johannes Schaub - litb
fuente
6

Usé KDbg (solo funciona bajo KDE).

codeguru
fuente
3
KDbg no está limitado a KDE.
nobar
Eso es asombroso . Me pregunto dónde ha estado todo este tiempo.
edmz
5

He probado un par de diferentes guis para gdb y he descubierto que DDD es el mejor de ellos. Y aunque no puedo comentar sobre otras ofertas que no son de gdb para Linux, he usado varios otros depuradores en otras plataformas.

gdb hace la mayoría de las cosas que tienes en tu lista de deseos. DDD les pone un frente más agradable. Por ejemplo, el cambio de hilo se simplifica. Establecer puntos de interrupción es tan simple como cabría esperar.

También obtienes una ventana de cli en caso de que haya algo oscuro que quieras hacer.

La única característica de DDD que se destaca sobre cualquier otro depurador que he usado es la "gráfica" de datos. Esto le permite mostrar y organizar estructuras, objetos y memoria como cuadros arrastrables. Al hacer doble clic en un puntero, se abrirán los datos desreferenciados con enlaces visuales de regreso al padre.

Andrew Edgecombe
fuente
¿Ddd funciona en programas con argumentos? No pude conseguir que pase los argumentos ...
user3236841
Si no recuerdo mal, DDD puede darle una ventana de consola directamente a GDB. En la consola GDB, puede configurar los argumentos de la línea de comandos utilizando el comando "set args xyz abc".
Andrew Edgecombe
5

Qt Creator-on-Linux está ciertamente a la par con Visual Studio-on-Windows para C ++ hoy en día. Incluso diría que es mejor en el lado del depurador.

Marv
fuente
5

Hay un IDE que falta en esta lista y que es muy eficiente (lo he usado en muchos proyectos C / C ++ sin ningún problema): Netbeans .

Florent
fuente
Prefiero ampliamente cgdb ahora que me he acostumbrado, pero Netbeans fue un gran trampolín de VS.
zzxyz
3

Lo que se puede recorrer estará limitado por la información de depuración que produce g ++, en gran medida. Emacs proporciona una interfaz para gdb que le permite controlarlo a través de las barras de herramientas / menús y mostrar datos en ventanas separadas, así como escribir comandos gdb directamente. El CDT de Eclipse proporciona herramientas similares. He oído hablar de Anjuta y Code :: Blocks pero nunca los usé.

Allen
fuente
3

Como alguien familiarizado con Visual Studio, he visto varios IDE de código abierto para reemplazarlo, y KDevelop es el IMO más cercano a ser algo que una persona de Visual C ++ puede simplemente sentarse y comenzar a usar. Cuando ejecuta el proyecto en modo de depuración, usa gdb pero kdevelop maneja prácticamente todo el proceso para que no tenga que saber que es gdb; solo estás caminando o asignando relojes a variables.

Todavía no es tan bueno como el Visual Studio Debugger, desafortunadamente.


fuente
3

No menciona si está utilizando Windows o UNIX.

En sistemas UNIX, KDevelop es bueno, pero uso KDbg porque es fácil de usar y también funcionará con aplicaciones no desarrolladas en KDevelop.

Eclipse es bueno en ambas plataformas.

En Windows, hay un gran paquete llamado Wascana Desktop Developer que es Eclipse CDT y MinGW, todo empaquetado y preconfigurado muy bien para el mínimo dolor. Es lo mejor que he encontrado para desarrollar código GNU en Windows.

He usado todos estos depuradores y ninguno de ellos es tan bueno como MS Dev Studio. Eclipse / Wascana es probablemente el más cercano, pero tiene limitaciones, como que no puede ingresar a las DLL y no hace un buen trabajo al examinar las variables.

Adam Pierce
fuente
3

¿Alguna vez has echado un vistazo al depurador DS-5 ?

Hay una versión paga que incluye muchas funciones útiles, pero también puede usar Community Edition de forma gratuita (que también es bastante útil, especialmente para sistemas integrados).

Tengo una experiencia positiva con esta herramienta cuando depuro aplicaciones de Android en un dispositivo real usando eclipse.

Viktor Malyi
fuente
2

El código: Blocks C ++ IDE tiene un contenedor gráfico, con algunas de las características que desea, pero nada como el poder de VS.

crobar
fuente
2

VisualGDB es otro complemento de Visual Studio para desarrollar y depurar aplicaciones en Linux y plataformas integradas.

Sergey Zhukov
fuente
1

KDevelop funciona bastante bien.

Harold Ekstrom
fuente
1

¿Has probado gdb -w con cygwin gdb? Se supone que tiene una interfaz de Windows que funciona bastante bien.

El único problema que encontré es que en mi máquina actual no funcionó de esa manera hasta que instalé ddd. Sospecho que requiere tcltk, que se instaló cuando instalé ddd.

BubbaT
fuente
0

La última versión de Geany lo admite (solo en Linux, sin embargo)

Milan Babuškov
fuente
0

Si está buscando gdb en Visual Studio, compruebe WinGDB .

Dominic.wig
fuente
0

En los últimos 15 meses utilizo información (vino con FC6). No es genial, está escrito en Tcl / Tk, pero es simple y útil. DDD es de calidad / utilidad similar, pero algo más difícil de usar (varios problemas y omisiones de GUI). También intenté integrar gdb con mi IDE, SlickEdit. Funcionó bien (jugué unas 4 horas con él), pero no me gustaron los cambios de contexto de la GUI. Me gusta que mi IDE permanezca sin cambios mientras estoy depurando; en Windows uso SlickEdit para IDE y Visual Studio Debugger para la depuración. Entonces, desde el 3: Insight, DDD y SlickEdit, Insight es mi primera opción, lo uso> 95% del tiempo, la línea de comandos gdb y DDD constituyen el otro 5%. Si tengo la oportunidad, evaluaré Eclipse en algún momento, mi PC de trabajo no parece tener suficiente RAM (solo 1GB) para ejecutar Eclipse razonablemente bien.

También he escuchado muchos elogios para TotalView, incluida la primera mano durante una entrevista de trabajo. Obtuve una evaluación para nuestra empresa a fines de 2008, pero al final no procedimos ya que gdb era lo suficientemente bueno para nuestras necesidades; y es gratis y ubicuo.

Radim Cernej
fuente
0

Use www.zero-bugs.com/ Zero debugger, requiere soporte C ++ 0x de gcc

siddhusingh
fuente
1
El sitio web www.zero-bugs.com/ está inactivo
vharron
0

Estaba buscando un depurador para pasar por un programa en ejecución. Diga: adjuntar. El programa fue construido con eclipse, pero quizás debido a algunos obstáculos de subprocesos múltiples, no hay archivos fuente donde sea aficionado. Lo que sea.

Me puse muy cómodo con NetBeans.

  • [depurar] desde el menú -> Adjuntar depurador ...
  • como proceso eligió el para depurar
  • como proyecto [nuevo proyecto]

Ahora la ventana desaparece y no ves nada. desprenderse del proceso. El cuadrado de lectura "Stop" ayuda.

  • importar fuente del proyecto como, por ejemplo, carpeta. "... / MyProject / src
  • Ahora aparece en su proyecto y puede establecer puntos de interrupción.
  • De nuevo ttach depurador
  • eligió el proceso para depurar.
  • el depurador debería detenerse si el programa alcanza el siguiente punto de interrupción.

Ir a [ventana] -> [Depuración] -> ¿Su ventana lo hará más cómodo?

Ojo cutton
fuente