Aprender los comandos de GDB está en mi lista de deseos, pero mientras tanto, hay un depurador gráfico para plataformas * nix que acepta comandos Windbg y tiene una funcionalidad similar? Por ejemplo, ¿la capacidad de mostrar múltiples ventanas de memoria editables, desarmar automáticamente alrededor de un área mientras camina, establecer el estilo de desarmado y tener una ventana con registros que tengan valores editables?
Comentarios
- @AshRj ah, veo lo que quieres decir ahora. Mi error, disculpas.
- Voltron es totalmente nuevo pero parece prometedor (todavía no lo probé).
- En SO: stackoverflow.com/questions/79023/…
Respuesta
Comencé mi propia interfaz de gdb llamada gdbgui que es una servidor (en python) que le permite acceder a una interfaz completa en su navegador .
Instalar
pip install gdbgui --upgrade
o descargar en gdbgui.com
Funciona en todas las plataformas (Linux, macOS y Windows) y navegadores con JavaScript.
Ejecutar
Simplemente escriba
gdbgui
en su terminal, y r abrirá una nueva pestaña.
Funciones
- establecer / eliminar puntos de interrupción
- ver el código fuente, con código de máquina en línea opcional
- seleccionar el marco actual en la pila
- recorrer el código fuente o el código de máquina
- crear / explorar variables
- ver / seleccionar subprocesos
- explorar memoria
- ver registros
- funcionalidad completa de terminal gdb para que pueda enviar comandos tradicionales de gdb y ver gdb / salida de programa inferior
- diseño inspirado en el asombroso depurador de Chrome
- compatible con el RR de Mozilla, para depuración inversa
Comentarios
- Este es un buen trabajo, de verdad. El diseño llega al núcleo del caso de uso promedio. Me gusta. También admite depuración remota (o, mejor dicho, admite el uso del comando
target remote host:port
gdb. Bien hecho. Quizás agregar la capacidad de conectarse a un host remoto en el menú sería una buena adición -on. ¿Sería posible reducir el tamaño del ‘ register`? Toda la información está disponible, pero (al menos en ARM) puede ‘ No veo todos los registros a la vez, por lo que debe desplazarse. - Los comentarios aquí no son para
gdbgui
soporte individual. Abra un nuevo pregunta en sx, o usa los canales de soporte de gdbgui / rastreador de errores.
Responder
Aunque algunas personas no » Para cuidar su interfaz, vale la pena mencionar que GDB también tiene su propia GUI incorporada (llamada TUI).
Puede iniciar GDB en modo GUI con el comando: gdb -tui
Puede encontrar una referencia rápida a los comandos TUI aquí: http://beej.us/guide/bggdb/#qref
Respuesta
Por lo general, he usado Emacs GUD como interfaz de GDB.
No es demasiado difícil de usar, le permite establecer puntos de interrupción visualmente (o a través de la ventana de GDB si lo prefiere).
Tiene varias vistas diferentes a las que puede acceder desde un menú de GDB de nivel superior:
También permite sutilezas como permitirle inspeccionar valores al pasar el mouse sobre ellos:
Para usarlo, primero debe navegar a la carpeta de su binario con C-x C-f
, luego M-x gdb
(Eso «s» Alt + X
» , luego escriba «gdb
«). Después de hacer esto, puede escribir una línea de comando gdb, o simplemente presionar [Enter]
para aceptar su valor predeterminado. A partir de ahí, simplemente escribe «inicio» en la ventana de gdb con los parámetros que quieras pasar al programa que estás depurando.
Después de eso, estás prácticamente dorado, pero con solo una vista. Los menús en la parte superior de la pantalla debajo de «GUD» le permitirán abrir otras vistas relevantes para lo que sea que esté intentando depurar.(Los marcos son ventanas independientes y las «ventanas» son ventanas dentro del marco)
Por lo general, de forma predeterminada, se establece un punto de interrupción al iniciar el programa y, a continuación, puede navegar por su código usando los botones en la parte superior de la ventana, o si no tiene código, puede personalizar su vista para permitirle pasar por un desmontaje del binario que está viendo.
Los botones en la parte superior de la ventana rodeados con «{} «son para pasos a nivel de código, y los botones con» <> «en su icono son para depuración a nivel de instrucción. Así que probablemente querrá enfocarse en la izquierda si está depurando código normalmente, y concentrarse más en la derecha si está entrando en el meollo de la cuestión.
Además, si alguna vez se pierde, este icono:
Es un libro completo que probablemente pueda responder a sus preguntas. La única vez que no existirá en Emacs es si estás en Debian (Ubuntu está bien) e instalaste Emacs desde sus repositorios. En cuyo caso necesitarás instalar «emacs<vesrsion>-common-non-dfsg
» para obtener los manuales. (Con «<version>
» siendo los dígitos no decimales devueltos por M-x version
en Emacs)
Comentarios
- Esto es Spacemacs y no GNU Emacs, ¿verdad?
- Nop. Esto es simple ‘ ol GNU Emacs, acabo de tener el mío diseñado para que se vea así. Nada de lo que mencioné anteriormente es específico de mi configuración. (Y en realidad, Spacemacs es solo un conjunto de configuraciones de Emacs también, pero no tengo ni idea de si cambia el uso de GDB)
- Ese ‘ no existe en Emacs. ¿Qué sistema operativo y paquetes está ejecutando?
- Parece que tiene el paquete Power Line instalado entre otras cosas. emacswiki.org/emacs/PowerLine
- @mrbean Esto en Linux Mint y sí, creo que mi tema de Emacs en 2013 fue base16-tomorrow con PowerLine (¡Buen reconocimiento por cierto!)
Responder
Mi opinión es un poco parcial pero, para depurar ensamblador, la mejor «interfaz» de GDB es IDA (admite la comunicación con objetivos de GDB remotos). Sin embargo, para la depuración del código fuente, recomendaría KDBG.
Comentarios
- De hecho, recomendaría usar IDA ‘ s
linux_server
sobre GDB remoto, es ‘ s más capaz y más rápido (ya que usa un protocolo binario y no uno basado en texto ). - Justifique su recomendación. Las respuestas están escritas no solo para el OP sino para todas las demás personas que puedan encontrar esto en el futuro.
- Básicamente porque tiene todo el poder de IDA (complementos, secuencias de comandos IDAPython, GUI conocido,. ..) y no es solo una interfaz para GDB.
Responder
Incluso con el riesgo de una votación negativa grave , Me gustaría ponerme del lado del antiguo mensaje gdb
y recomendarlo en contra de una interfaz gráfica de usuario. Comencé a aprender un uso más avanzado de GDB leyendo Art of Debugging hace algunos años. Describe GDB y DDD, así como Eclipse como interfaces para GDB.
Es cierto que la mayoría de las veces estoy usando Vim como mi IDE en terminal y tmux
(antes screen
con byobu
). Por lo tanto, estoy cambiando entre paneles en mi multiplexor de terminal para cambiar rápidamente entre el código y el depurador. El indicador de GDB, después de algunas semanas de probar la TUI, ha ed todo lo que siempre deseé y debe tener en cuenta que puede adjuntar varias veces al mismo proceso (por lo tanto, ver la memoria de la forma en que la describe).
Parece que todas las interfaces se están quedando atrás un poco, no es de extrañar, y tiene más sentido aceptar el indicador de GDB y sus sutilezas y rarezas. Tenga en cuenta que en una configuración básica puede ser lo único que tenga. Por lo tanto, tiene sentido aprenderlo incluso si encuentra una GUI «decente» según sus propios estándares.
Las versiones más nuevas de GDB también admitirán secuencias de comandos de Python y, a través de eso, proporcionarán un conjunto muy poderoso de herramientas para depurar, incluso solo desde la línea de comando.
Si insiste absolutamente en usar una interfaz gráfica de usuario, también recomendaría IDA Pro por la sencilla razón de que le brinda una sola interfaz para una variedad de depuradores y tiene que aprender (o personalizar) sus atajos solo una vez. Desventajas: precio y flexibilidad cuando no tiene una licencia en una máquina en particular o no hay forma de hacer un túnel a un servidor GDB, etc.
No conozco ninguna interfaz de GDB que acepta comandos WinDbg. Y solo puedo enfatizar nuevamente: de todos modos cosecharás el fruto del tiempo invertido en aprender GDB básico. No evite el esfuerzo. Hay muchas cosas en WinDbg que son específicas de la forma en que funciona Windows, el kernel de Windows y demás. GDB es mucho más genérico.
Respuesta
Me gustaría sugerir DDD .
Si tiene el código fuente, debería consultar QTCreator . Su depurador es similar al de Visual Studio, si está familiarizado con eso.
Comentarios
- I ‘ he usado
DDD
y no era ‘ un fan. Sin embargo, ‘ echaré un vistazo a QtCreator, ¡gracias! - DDD es excelente para mostrar estructuras de datos, puede colocarlas en un tablero (una especie de tabla de luz ). Por lo tanto, data-display-debugger.
- DDD parece extraño y desactualizado a primera vista, pero ‘ es realmente poderoso.
Respuesta
No es GUI pero es un buen reemplazo una vez que te acostumbras (y personalmente creo que es más rápido para la mayoría de las cosas ) -> https://github.com/gdbinit/Gdbinit .
Recordé cuando empecé a invertir * nix y tenía para enfrentarme a gdb por primera vez. Lo odié y + mammon original «s gdbinit me salvó el día. En estos días prefiero gdb a la mayoría de los depuradores de GUI.
Pruébelo 🙂
Divulgación completa: soy el autor de la herramienta.
Comentarios
- Debe escribir una declaración de que Gdbinit es un software que ‘ está manteniendo …
- ¿Asi que? Es ‘ gratis y está disponible para todos. No exactamente tratando de vender nada aquí. ¡Caramba …!
- @ fg- Puede que todavía se trate de publicidad que no se basa en la experiencia, sino únicamente en el hecho de que usted escribió esa herramienta.
- Para que pueda ‘ ¿No anuncia sus útiles herramientas que resuelven problemas y tiene que esperar a que otros lo hagan? Ese ‘ es un modo de pensamiento realmente extraño para un solucionador de problemas » community «.
- @ fG- lea las preguntas frecuentes: reverseengineering.stackexchange.com/faq#promotion
Respuesta
Realmente no me gusta DDD, es tan 90 «en su GUI.
Yo Me gustaría recomendar KDBG, que es una interfaz de KDE para gdb. Además, es posible que desee echar un vistazo a Cgdb, que es una extensión de curses para gdb.
Últimamente me encontré con Nemiver , parece realmente prometedor.
Comentarios
- ¿KDBG también funciona bien para desmontar y depurar sin código fuente? Sus capturas de pantalla mostraban solo el código fuente.
- No ‘ no lo sé, nunca lo intenté antes …
- » es ‘ por lo que 90 ‘ s ‘ s GUI » … más como 80 ‘ s
- ¿Es la apariencia de la GUI el único inconveniente?
La respuesta
cgdb también es una gran opción si usa Vim.
cgdb comparte muchos comandos con vim, como la búsqueda de expresiones regulares y muchos otros. Desde la página de inicio de cgdb:
La interfaz del teclado está modelada a partir de vim, por lo que los usuarios de vim deben sentirse como en casa usando cgdb.
Respuesta
Normalmente uso Vim + gdb en modo CLI al codificar, etc. Pero a veces una GUI es preferible.
Otra opción, además de las mencionadas, es Code :: Blocks. Utiliza GDB y CDB como back-end. Para GDB, puede seleccionar AT & T, Intel o personalizado para el desmontaje. Admite el modo mixto y la lista de instrucciones puras. Puede configurarlo aún más para evaluar variables (en código) debajo del cursor, etc.
Solo hay una ventana de volcado de memoria, pero también puede ingresar comandos GDB sin procesar en Línea de comando en la parte inferior que se imprime en la ventana, por ejemplo, volcados de memoria.
Tiene una ventana separada para los registros de la CPU, no son directamente editables, pero puede establecer valores mediante la línea de comando mencionada, así como otros valores:
set $eax = 123 set var xyz = "q"
La imagen siguiente lo muestra en acción con la depuración de código fuente en un KVM (enlace abierto para verlo en formato más grande).
Un problema que he tenido con él son algunos errores de GUI, etc. cuando lo ejecuto en Ubuntu 12 – UB 12 tiene la versión 10.10. Pero una compilación e instalación de la versión actual , 12.11, fue sencilla.
Por ejemplo, para instalación de ruta de instalación personalizada (si su distribución no tiene una versión actualizada y desea tener ambas):
- Download (SVN or release). - Unpack. - ./configure --exec-prefix=/blahblah/codeblocks --prefix=/blahblah/codeblocks - make - sudo make install 2>&1 | tee my_install.log
Respuesta
Este artículo de Dr Dobbs muestra en detalle las GUI para depurar en el sistema operativo Linux. Recomiendo el Qt-Creator llamado depuración GDB basado en entorno Linux.De todos modos, el artículo solo revisa la depuración del código C ++, pero eso es suficiente para mostrar las características de depuración de GDB.
Respuesta
Recomendaré UltraGDB , que es una interfaz gráfica de usuario de GDB y un IDE ligero basado en la tecnología Eclipse.
Respuesta
Hay interfaz gráfica de usuario del depurador Affnic . No es gratis pero existe una versión lite. Está disponible para Windows, Linux & MacOS.
Desde el sitio web oficial,
Affinic Debugger GUI .aka. ADG, está diseñado como una interfaz gráfica de usuario para varios depuradores. Esta compilación está dirigida específicamente a GDB, el depurador GNU. Con las ventanas gráficas, ADG puede liberar todo el poder de los depuradores al visualizar múltiples tipos de información dentro de una vista y maniobrar depuradores con un simple clic. ADG también proporciona un terminal de comando integrado para que los usuarios ingresen el comando del depurador directamente. ADG está disponible en Linux / Windows / Mac OS X.
Respuesta
VisualStudio.Code ( VS.Code ) se ejecuta en Linux y tiene una extensión «Native Debug» que le permite usar gdb. Tiene una interfaz de usuario muy receptiva. Es extremadamente liviano en recursos. La experiencia se aproxima un poco a Visual Studio en Windows para desarrolladores de C ++ (aunque no hay vista de ensamblaje). Los principales atajos de depuración son los mismos listos para usar (F5, Shift-F5, F10, F11).
La instalación es de dos clics (uno para instalar VS.Code, el otro para instalar la extensión), ideal para alguien que viene de Windows Visual Studio y busca ser productivo de inmediato.
Respuesta
Hay « Voltron , que es una IU de depurador de Python extensible que admite LLDB, GDB, VDB y WinDbg / CDB (a través de PyKD) y se ejecuta en macOS, Linux y Windows. Para los primeros tres, es compatible con x86, x86_64 y arm incluso con soporte arm64 para lldb, al tiempo que agrega compatibilidad con powerpc para gdb.
El autor también escribió un complemento Binary Ninja para integrar Voltron – https://github.com/snare/binjatron , que permite vistas sincronizadas.
Respuesta
Tenga en cuenta que lo siguiente se aplica solo a la depuración del código fuente.
CLion
es un IDE
que usa gdb
. Todavía tiene la capacidad de escribir comandos, pero muchas funciones se implementan sin problemas en la GUI, como por ejemplo, ver las variables activas actualmente y configurar breakpoints
. Leer más here
.
Responder
Puede utilizar GDBFrontend . Esta es una interfaz de GDB muy pirateable.
Divulgación completa: soy el desarrollador.