No responda Debería usar ddd, nemiver, emacs, vim o cualquier otro front-end, solo prefiero gdb como es, pero me gustaría ver su salida con algunos colores de terminal.¿Cómo resaltar y colorear la salida de gdb durante la depuración interactiva?
Respuesta
.gdbinit
Se pueden ajustar sus ~/.gdbinit
tener colores.Se puede utilizar de .gdbinit
riquezas que está disponible aquí:
https://github.com/gdbinit/gdbinit
Se pueden ajustar tanto como usted quiere también. Encontré esto gracias a this SO answer. Aquí está el tipo de salida que se puede obtener:
Un repositorio GitHub también está disponible: https://github.com/gdbinit/Gdbinit
En una nota, la misma idea fue también applied to lldb.
GDB tablero de instrumentos
Siguiendo el mismo concepto, GDB Dashboard proporciona una interfaz visual modular para GDB en Python.
(void) Walker
Otro proyecto similar utiliza el soporte de Python del BGF para proporcionar más extensibilidad, así que esto vale la pena ver: https://github.com/dholm/voidwalker
@dholm también proporciona su propia .gdbinit inspirado El anterior.
pwndbg
Algunos proyectos proporcionan un conjunto de funciones útiles, incluyendo pantalla mejorada. Este es el caso para PEDA o pwndbg. Este último da la siguiente descripción:
A PEDA reemplazo. En el espíritu de nuestro buen amigo
windbg
,pwndbg
se pronunciapwnd-bag
.
- velocidad
- Resiliencia
- código limpio
Proporciona comandos para apoyar la depuración y explotación de desarrollo similar a los de PEDA, y mejor pantalla (aunque esta no es la principal enfoque del proyecto). El software aún está en desarrollo y aún no se ha lanzado correctamente.
voltron
Los project Descripción estados:
Voltron es una interfaz de usuario de depurador extensible para los piratas informáticos.Le permite adjuntar las vistas de la utilidad que se ejecutan en otros terminales a su depurador (LLDB o GDB), mostrando información útil como desensamblaje, pila contenidos, valores de registro, etc., al tiempo que le da el mismo CLI depurador que está Acostumbrado a.
Puede modificar su .gdbinit
para integrarlo automáticamente. Sin embargo, la pantalla en sí está fuera de GDB (por ejemplo, en una división de tmux).
GEF
GEF es otra opción, y se describe como:
Está dirigido a utilizarse principalmente por los explotadores y los ingenieros inversa, a proporcionar características adicionales a GDB usando la API de Python para ayudar a durante el proceso de análisis dinámico y desarrollo de exploits.
muchas gracias por su respuesta, ¿tiene alguna idea de cómo desactivar la salida de registro? (Estoy usando gdb para el código de C++ y no necesito ningún nivel de ensamblador de inmediato) – vak
@vak para gdbinit? – BenC
sí. Maldito "Los comentarios deben tener al menos 15 caracteres de longitud". – vak
No son colores, pero considere gdb's text gui. Hace una gran diferencia de qué tan útil es gdb.
Puede iniciar con:
gdb -tui executable.out
Captura de pantalla:
Como se puede ver, las características principales son:
- muestra qué línea de la fuente estamos en y alrededor de las líneas
- muestra los puntos de interrupción
¡Guau! ¡Gracias! He estado buscando durante mucho tiempo un buen shell gráfico alrededor de gdb, y he intentado xxgdb, kgdb y ddd, pero ninguno de ellos funcionó muy bien para mí, así que me he quedado con la vieja interfaz de línea de comandos. ¡Pero esto es absolutamente perfecto! –
Ctrl-x Ctrl-a: Ingrese esto para cambiar ay desde el modo gui de texto, funciona incluso sin la opción de línea de comando. – jturcotte
Imprimir en stdout desde el programa me rompe la interfaz. ¿Alguna solución alternativa además de redirigirla? –
puede obtener cualquier color que desee;
# gdb
(gdb) shell echo -en '\E[47;34m'"\033[1m"
...
anything is now blue foreground and white background
...
(gdb) shell tput sgr0
... back to normal
Es posible mejorar en gran medida la apariencia de gdb mediante el uso de colores. Esto se hace a través de cualquiera de los siguientes métodos:
- Solicitud coloreada mediante el "indicador de configuración". Por ejemplo, haga que el mensaje sea en negrita y rojo:
set prompt \033[1;31m(gdb) \033[m
- Mandatos coloreados a través de los enganches
- Color resaltado de sintaxis del comando "list".
Todos los ejemplos están disponibles en las siguientes entradas de blog escrito por Michael Kelleher:
"Beautify GDB", May 12, 2010 (via archive.org)
"Experimental GDB syntax highlighting", May 15, 2010 (via archive.org)
Los enlaces están rotos. –
@Mike: sería útil publicar el contenido de esos enlaces aquí ya que el sitio ya no está accesible y robots.txt impidió que archive.org lo indexe. –
Puede obtener la información relevante aquí: https://sourceware.org/gdb/current/onlinedocs/gdb/Prompt.html – musiphil
#into .gdbinit
shell mkfifo /tmp/colorPipe
define hook-disassemble
echo \n
shell cat /tmp/colorPipe | c++filt | highlight --syntax=asm -s darkness -Oxterm256 &
set logging redirect on
set logging on /tmp/colorPipe
end
define hookpost-disassemble
hookpost-list
end
define hook-list
echo \n
shell cat /tmp/colorPipe | c++filt | highlight --syntax=cpp -s darkness -Oxterm256 &
set logging redirect on
set logging on /tmp/colorPipe
end
define hookpost-list
set logging off
set logging redirect off
shell sleep 0.1s
end
define hook-quit
shell rm /tmp/colorPipe
end
define re
hookpost-disassemble
echo \033[0m
end
document re
Restore colorscheme
end
Advertencia: Buggy. No hay soporte TUI, hack 'modo de usuario'.
Encontré la parte principal here y la modifiqué un poco. Necesita destacar, C++ filt. Si los colores se arruinan, emita el comando re.
cgdb
es mucho mejor que gdb -tui
De acuerdo. Las líneas simples impresas por mi programa destrozaron la consola de gdb -tui. Esto no ocurre bajo cgdb. ¡Gracias por el consejo! –
quería destacar las siguientes: enfatizan las líneas de un seguimiento de la pila que pertenecen a mis archivos de origen (en lugar de las bibliotecas).
La solución fue usar GDB-pitón (en MSYS; en Linux normalmente gdb
viene con Python incorporada ya?), Enganche backtrace
, utilice
python stack_trace = gdb.execute('backtrace', False, True')
A continuación, procesar stack_trace
con expresiones regulares de Python, e imprimir ellos afuera. Los colores fuertes y otros se consiguen mediante una función como esta:
def term_style(*v):
"""1 is bold, 30--37 are the 8 colours, but specifying bold may also
change the colour. 40--47 are background colours."""
return '\x1B['+';'.join(map(str, v))+'m'
#Use like this:
print term_style(1) + 'This will be bold' + term_style(0) #Reset.
print term_style(1,30) + 'This will be bold and coloured' + term_style(0)
print term_style(1,30,40) + 'Plus coloured background' + term_style(0)
aseado, acabo de encontrar este truco usando colout: https://github.com/nojhan/colout/blob/master/colout/example.gdbinit
Otra buena combinación de colores está dada por this configuration. Hace que inspeccionar las trazas inversas sea mucho más fácil. Para usarlo, simplemente guarde ese archivo como ~/.gdbinit
y ejecute gdb normalmente
Gracias, esto era precisamente lo que estaba buscando. Estaba buscando en una aplicación multiproceso con una pila de llamadas larga y esto es perfecto para esas trazas inversas. –
- 1. Cómo usar la consola interactiva Eclipse en la depuración
- 2. Cómo colorear la salida de estado de git?
- 3. Durante la depuración en Eclipse, ¿es posible saltar a una línea y ejecutarla durante la depuración?
- 4. Compilación de GDB para la depuración remota
- 5. Xcode evaluando expresiones durante la depuración
- 6. ¿Cómo manejo una ClassNotLoadedException durante la depuración?
- 7. Cómo detener el temporizador durante la depuración
- 8. Edición C# durante la depuración
- 9. RSpec. ¿Cómo colorear la salida canalizada o redirigida?
- 10. Debug.WriteLine omitido durante la depuración
- 11. ¿Cómo veo la salida de depuración gstreamer?
- 12. ¿Alguien probó la depuración inversa en gdb?
- 13. Cómo interpretar direcciones backtrace para la depuración con GDB
- 14. Linux C: salida interactiva
- 15. Recomendaciones para la depuración "dinámica/interactiva" de funciones en R?
- 16. ¿Cómo llamo a la lista de Python durante la depuración?
- 17. problema con la salida de aplicación depurada en gdb
- 18. gdb - depuración con tubería
- 19. CMake colorear errores y advertencias
- 20. vs2010 C# depuración resaltar color
- 21. Finalización de código y Delphi durante la depuración
- 22. ¿Cómo puedo personalizar la salida de Jenkins?
- 23. ¿Cómo puedo ver la salida de printf dentro de gdb?
- 24. Cómo usar Console.WriteLine en ASP.NET (C#) durante la depuración?
- 25. plantillas de depuración con GDB
- 26. Viendo variables en SSIS durante la depuración
- 27. IntelliJ - detener un hilo durante la depuración
- 28. La comprensión de la salida de la cerca eléctrica y GDB
- 29. salida extraña durante la fusión de git
- 30. ¿Cómo volver a un punto de interrupción durante la depuración?
No le dará colores (por lo que no lo llamaré Respuesta), pero la configuración ~/.gdbinit mejorará la experiencia. Puedo usar esto como un mínimo: historia conjunto ahorrar en el conjunto de impresión bastante conjunto de salida-radix 16 conjunto altura 0 –
Sería bueno para cambiar la respuesta aceptada por lo que mi viejo, respuesta incorrecta se puede eliminar. Gracias. – ddaa
Una vez que resalte la línea actual en 'l' se implementa https://sourceware.org/bugzilla/show_bug.cgi?id=21044, agregaré' l' a 'hook-stop' e ingresaré Dev Nirvana. –