Vista dividida de gdb con código


111

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:

Lo siento por la imagen, pero ttys no tiene capturas de pantalla.

¿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?


2
Para una referencia rápida: puede salir de este modo usando cualquiera de Cx Ca, Cx a o Cx A.` Vea esta pregunta .
Richard

Respuestas:


95

Se llama TUI (no es broma). Empiece por ejemplo con gdbtuio gdb -tui...


11
también puede usar layout nextdespués de comenzar gdbnormalmente
Khaverim

87

Puede activarlo dinámicamente presionando ctrl+ xy ctrl+ a.


gracias @ user146043, esta parece la única forma si está ejecutando screen al mismo tiempo que ctrl-a es la forma de iniciar los comandos de la pantalla.
olik79

¡Parece que también puedes cerrar con ese combo!
Nick Desaulniers



15

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 el displaycomando 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:

  • altamente 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 ;-)

ingrese la descripción de la imagen aquí

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?


2
No hay suficientes palabras para describir lo maravilloso que es. Gracias :)
unresolved_external

11

Escriba layoutcomo un comando en gdb y se mostrará la ventana dividida.


5

Cuando GDB está en el modo estándar, el uso wincambiará 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.


2

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

cgdb


1

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.


Obviamente, la mayoría de los programas de GNU tienen emacs como combinaciones de teclas, principalmente por razones de coherencia. Sé que hay un modo vi en bash, pero eso no es lo suficientemente bueno como el modo emacs.
Klaus
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.