gdb terminal colors

¿Cómo resaltar y colorear la salida de gdb durante la depuración interactiva?



terminal colors (10)

.gdbinit

Puedes modificar tu ~/.gdbinit para que tenga colores. Puedes usar .gdbinit de .gdbinit que está disponible aquí:

https://github.com/gdbinit/gdbinit

Puedes ajustarlo tanto como quieras también. Encontré esto gracias a esta respuesta SO . Este es el tipo de resultado que puede obtener:

Un repositorio GitHub también está disponible: https://github.com/gdbinit/Gdbinit

En una nota lateral, la misma idea también se aplicó a lldb .

Tablero de GDB

Siguiendo el mismo concepto, GDB Dashboard proporciona una interfaz visual modular para GDB en Python.

(vacío) andador

Otro proyecto similar utiliza el soporte Python de GDB para proporcionar más extensibilidad, por lo que vale la pena visitar este sitio: https://github.com/dholm/voidwalker

@dholm también proporciona su propio .gdbinit inspirado en el anterior.

pwndbg

Algunos proyectos proporcionan un conjunto de funciones útiles, incluida una visualización mejorada. Este es el caso de PEDA o pwndbg . Este último da la siguiente descripción:

Un reemplazo de PEDA. En el espíritu de nuestro buen amigo windbg , pwndbg se pronuncia pwnd-bag .

  • Velocidad
  • Resistencia
  • Código limpio

Proporciona comandos para apoyar el desarrollo de depuración y explotación similar a los de PEDA, y una mejor visualización (aunque este no es el enfoque principal del proyecto). El software aún está en desarrollo y aún no se ha lanzado correctamente.

voltron

La descripción del project dice:

Voltron es una interfaz de usuario depuradora extensible para piratas informáticos. Le permite adjuntar vistas de utilidad que se ejecutan en otros terminales a su depurador (LLDB o GDB), mostrando información útil como desmontaje, contenido de pila, valores de registro, etc., al tiempo que le proporciona la misma CLI de depurador a la que está acostumbrado.

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á destinado a ser utilizado principalmente por explotadores e ingenieros de inversión, para proporcionar características adicionales a GDB utilizando la API de Python para ayudar durante el proceso de análisis dinámico y desarrollo de exploits.

Por favor, no responda Debería usar ddd, nemiver, emacs, vim o cualquier otro front-end, prefiero gdb como es, pero me gustaría ver su salida con algunos colores de terminal.


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:

  1. Indicación coloreada a través del "indicador de configuración". Por ejemplo, haga que el mensaje sea negrita y rojo: set prompt /033[1;31m(gdb) /033[m
  2. Comandos coloreados a través de ganchos
  3. Resaltado de sintaxis coloreada del comando "list".

Todos los ejemplos están disponibles en las siguientes publicaciones de blog escritas por Michael Kelleher:

"Embellecer GDB", 12 de mayo de 2010 (a través de archive.org)

"Destacado de sintaxis de GDB experimental", 15 de mayo de 2010 (a través de archive.org)



No son colores, pero considera la guía de texto de gdb. Hace una gran diferencia de qué tan útil es gdb.

Puedes lanzarlo con:

gdb -tui executable.out

Captura de pantalla:

Como puede ver, las principales características son:

  • muestra en qué línea de la fuente estamos y líneas circundantes
  • muestra puntos de interrupción

Otra buena combinación de colores viene dada por esta configuración . Hace que inspeccionar las trazas inversas sea mucho más fácil. Para usarlo, simplemente guarde ese archivo como ~/.gdbinit y ejecute gdb normalmente


Quería resaltar lo siguiente: enfatizar las líneas de un seguimiento de pila que pertenecen a mis archivos fuente (en lugar de bibliotecas).

La solución fue usar gdb-python (en MSYS; en Linux, por lo general, gdb viene con Python incorporado ya?), Enganchar backtrace , usar

python stack_trace = gdb.execute(''backtrace'', False, True'')

Luego, procese stack_trace con las expresiones regulares de Python e imprímalas. Los colores en negrita y otros se logran con 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)


Sé que no querías una interfaz. Pero, ¿qué tal cgdb está muy cerca de gdb, es un modo de texto pero tiene una ventana de origen arriba con resaltado de sintaxis en el código.


puedes obtener los colores que quieras;

# 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


cgdb es mucho mejor que gdb -tui


#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.