Estaba depurando un programa en gdb y de alguna manera encontré una nueva característica que nunca había visto o escuchado antes, una vista dividida donde puedo ver y explorar el código además de dar comandos:
¿Que es esto? ¿Qué hice o, más específicamente, cómo puedo volver a obtener este modo de pantalla dividida? ¿Hay un nombre para este modo o en algún lugar donde pueda leer sobre cómo usarlo?
Respuestas:
Se llama TUI (no es broma). Empiece por ejemplo con
gdbtui
ogdb -tui
...fuente
layout next
después de comenzargdb
normalmentePuede activarlo dinámicamente presionando ctrl+ xy ctrl+ a.
fuente
Hay dos variantes.
Presione
CTRL
X
juntos y luego1
Presione 'CTRL' 'X' juntos y luego '2'
http://www.cs.fsu.edu/~baker/ada/gnat/html/gdb_23.html
Una captura de pantalla de la vista con código y ensamblado.
También echa un vistazo a este increíble proyecto de Github.
fuente
También puede iniciarlo desde el shell de gdb usando el comando "-" (guión). Sin embargo, no estoy seguro de cómo apagarlo dinámicamente.
fuente
Panel de GDB
https://github.com/cyrus-and/gdb-dashboard
El panel de GDB utiliza la API oficial de GDB Python e imprime la información que desea cuando GDB se detiene, por ejemplo, después de
next
, como eldisplay
comando nativo .Vs TUI:
más robusto, ya que simplemente imprime en stdout en lugar de poner el caparazón en un estado de maldiciones más mágicas, por ejemplo:
vi
modo en.inputrc
causa problemas: /superuser/180512/how-to-turn-off-gdb-tui/927728#927728altamente configurable desde Python: puede seleccionar lo que desea generar y el tamaño de cada sección en función de lo que esté depurando.
Las vistas más útiles ya están implementadas: fuente, ensamblado, registros, pila, memoria, hilos, expresiones ... pero debería ser fácil extenderlo con cualquier información que esté expuesta en la API de GDB Python.
TUI solo permite mostrar dos de fuente, ensamblado y registros y eso es todo. A menos que desee modificar su código fuente C, por supuesto ;-)
Creo que GDB debería enviarse con una configuración como esa lista para usar y activada de manera predeterminada, atraería a muchos más usuarios de esa manera.
Ah, y el desarrollador principal, Andrea Cardaci , ha sido muy receptivo y asombroso. Grandes felicitaciones.
Ver también: ¿Cómo resaltar y colorear la salida gdb durante la depuración interactiva?
fuente
Escriba
layout
como un comando en gdb y se mostrará la ventana dividida.fuente
Cuando GDB está en el modo estándar, el uso
win
cambiará automáticamente al modo TUI.Otro comando para el modo TUI:
info win
Enumere y proporcione el tamaño de todas las ventanas mostradas.
focus next | prev | src | asm | regs | split
Establezca el foco en la ventana nombrada. Este comando permite cambiar la ventana activa para que las teclas de desplazamiento puedan verse afectadas a otra ventana.
Lea aquí para obtener más ayuda.
fuente
También hay una herramienta de interfaz para GDB llamada cgdb. Incluso con algo de resaltado de color. "ESC" para cambiar a la vista de código, "i" para volver a gdb
fuente
El modo tui se inspiró claramente en emacs; lo descubrí por accidente cuando presioné ^ Xo, que cambia entre ventanas divididas en emacs; a veces lo golpeo distraídamente cuando lo que debería hacer es cambiar a un programa diferente. De todos modos, eso lleva a otra característica aún no mencionada, que puede mover el cursor desde la ventana de código (donde puede desplazarse) a la línea de comando, o viceversa, con ^ Xo.
fuente