Volver a actualizaciones
Nuevo releaseSep 1, 2026

seer snap-latest

Seer - una interfaz gráfica para gdb

Compartir

Introducción

Seer: una interfaz gráfica para gdb en Linux. (Ernie Pasveer [email protected])

Este proyecto se trabaja activamente. El objetivo es una interfaz gráfica simple pero agradable para gdb.

Por favor, reporta cualquier error o funcionalidad deseada a mi correo electrónico o crea una tarea en la página de mi proyecto en GitHub.

Instalación

Seer puede instalarse desde un gestor de paquetes o desde el código fuente.

[!NOTE] Asegúrate de cumplir los requisitos antes de instalar.

Requisitos

  • Linux

  • C++17

  • gdb con el intérprete "mi" (compruébalo ejecutando: gdb --interpreter=mi)

  • CMake (3.5.0 o más reciente)

  • QT6

    • Al compilar Seer desde el código fuente, necesitarás los paquetes "devel" de QT6 instalados en tu sistema para tu distribución.
      • Core
      • Gui
      • Widgets
      • PrintSupport
      • Charts
      • Svg
    • Las instrucciones de compilación con Qt6 están aquí: https://github.com/epasveer/seer/wiki/Building-Seer---Qt6
  • QT5

Instalar desde paquete

Disponible a través de los siguientes gestores de paquetes:

Pamac (Manjaro)

$ pamac install seer

zypper (openSUSE Tumbleweed)

$ zypper install seergdb

Flathub

Sitio web de Flathub. Aquí

$ flatpak install flathub io.github.epasveer.seer

Flatpak

Versiones beta de Seer. Página de lanzamientos de Seer en github.

Importante: flatpak-spawn --host, necesario en GDB Launcher para ejecutar gdb. Consulta https://github.com/epasveer/seer/issues/377#issuecomment-3620844808.

Descarga seer.flatpak. Instálalo:

$ flatpak install -y --bundle --user seer.flatpak

Snap

Versiones beta de Seer. Página de lanzamientos de Seer en github.

$ snap install seergdb_<version>.snap --dangerous

Instalar desde el código fuente

(Recomendado) Seer puede compilarse con Qt6 siguiendo las instrucciones a continuación.

https://github.com/epasveer/seer/wiki/Building-Seer---Qt6

Todavía puede compilarse con Qt5, por el momento, siguiendo las instrucciones a continuación.

https://github.com/epasveer/seer/wiki/Building-Seer---Qt5

NOTICIAS

Consulta la página Wiki de Seer en github.

  • La versión v1.17 será la última versión para Qt5.
  • La próxima versión será la v2.0 y estará basada en Qt6. Sin embargo, por el momento, todavía se puede compilar con Qt5.
  • Si quieres el código fuente estable más reciente para Qt5, obtén la v1.17 desde aquí: https://github.com/epasveer/seer/releases/tag/v1.17

Iniciar Seer

Seer está pensado para iniciar fácilmente el programa a depurar desde la línea de comandos. gdb tiene múltiples métodos para depurar un programa. Así que Seer naturalmente también los tiene.

Ve a la Wiki para ver todas las formas de ejecutar Seer.

https://github.com/epasveer/seer/wiki/Starting-Seer

Resumen de la interfaz gráfica

Ejemplos de las diversas vistas y diálogos de Seer.

Vista principal

La vista principal de Seer se ve así:

  • Código fuente/Funciones/Tipos/Variables/Bibliotecas

    • La lista de archivos de código fuente/cabecera que se usaron en el programa.
    • Buscar Funciones, Tipos y Variables estáticas. Al hacer doble clic se abrirá el archivo de código fuente.
    • La lista de bibliotecas compartidas referenciadas por el programa.
    • La lista de archivos de código fuente/cabecera se puede buscar. Esto "reducirá" la lista de archivos mostrados.
    • Al hacer doble clic en un archivo se abrirá en el Administrador de código.
  • Información de Variables/Registros

    • Mostrar valores de variables y registros.
    • "Logger" - registrar el valor de una variable. Introdúcela manualmente o haz doble clic en la variable en el archivo que está abierto en el administrador de código.
    • "Tracker" - crear una lista de variables para mostrar el valor cada vez que gdb alcance un punto de detención (step, next, finish, etc.). Cuando se alcance el punto de detención, todas las variables de la lista mostrarán su posible nuevo valor.
    • "Registers" - mostrar los valores de todos los registros de la cpu.
  • Administrador de código.

    • La gran área de la parte central de la interfaz gráfica de Seer.
    • Los archivos de código fuente se abren en esta vista.
    • Se puede buscar texto en un archivo con ^F.
    • Se pueden añadir variables al "Logger" haciendo doble clic en el nombre de la variable. Al hacer doble clic con la tecla CTRL presionada se antepondrá "" a la variable. Al hacer doble clic con la tecla SHIFT presionada se antepondrá "&" a la variable. Al hacer doble clic con las teclas CTRL+SHIFT presionadas se antepondrá "&" a la variable.
    • Se pueden añadir variables al "Tracker" seleccionando el nombre de la variable y con el botón derecho del ratón (RMB) seleccionar "Add variable to Tracker".
    • Se pueden añadir variables al "Memory Visualizer" seleccionando el nombre de la variable y con el botón derecho del ratón (RMB) seleccionar "Add variable to Memory Visualizer".
    • Se puede crear un breakpoint/printpoint con el botón derecho del ratón (RMB) en una línea específica.
    • Se puede ejecutar hasta una línea específica con el botón derecho del ratón (RMB) en una línea específica.
    • Las pestañas de esta vista se pueden desacoplar haciendo doble clic en una pestaña.
  • Breakpoints, Watchpoints, Catchpoints, Printpoints, comandos manuales de gdb y registros.

    • El área debajo del Administrador de código.
    • Comandos manuales. Introduce manualmente un comando de gdb o gdbmi. Los comandos se recuerdan para el próximo uso de Seer.
    • Administrador de breakpoints. Crear y gestionar breakpoints.
    • Administrador de watchpoints. Crear y gestionar watchpoints. Un watchpoint supervisa cuándo se accede a una variable (lectura, escritura, lectura/escritura).
    • Administrador de catchpoints. Crear y gestionar catchpoints. Un catchpoint detiene la ejecución en una llamada C++ throw/rethrow/catch.
    • Administrador de printpoints. Crear y gestionar printpoints. Un printpoint es como un breakpoint pero te permite imprimir variables en ese printpoint. Consulta la llamada 'dprintf' de gdb.
    • Salida de GDB. Un registro de cualquier salida del propio programa gdb.
    • Salida de Seer. Un registro de cualquier salida del propio programa Seer. Como diagnóstico.
    • Las pestañas de esta vista se pueden desacoplar haciendo doble clic en una pestaña.
  • Información del marco de pila (stack frame).

    • Lista de marcos de pila. Se puede hacer doble clic en un marco para cambiar el ámbito (la función actual).
    • Argumentos del marco de pila. Para cada marco, imprime los argumentos pasados a cada función.
    • Variables locales de la pila. Para la función actual, imprime los valores de las variables locales.
  • Información de hilos.

    • Identificadores de hilos. Una lista de todos los hilos. Haz doble clic en un identificador de hilo para cambiar el ámbito (el hilo actual).
    • Marcos de hilos. Para cada hilo, lista sus marcos de pila.
  • Soporta el modo de Depuración Inversa de Gdb.

    • Activar o desactivar la grabación de instrucciones.
    • Establecer la dirección de reproducción hacia adelante o hacia atrás.

Diálogo de apertura

Cuando se invoca el diálogo de abrir ejecutable, se ve así:

Consola de Seer

Toda la salida de texto del ejecutable irá a la consola de Seer. La entrada de texto para el ejecutable también se puede introducir a través de la consola.

Vista de ensamblador

Normalmente Seer solo muestra el código fuente como pestañas en el Administrador de código. El ensamblador del programa también se puede mostrar como una pestaña.

Selecciona "View->Assembly View" y se mostrará una pestaña adicional junto a las pestañas de código fuente que muestra el ensamblador actual que se está ejecutando. Aquí hay un ejemplo.

Al igual que las pestañas de código fuente, se pueden establecer breakpoints en la pestaña de ensamblador. La instrucción actual está resaltada.

Al hacer doble clic en las entradas de la pestaña "Breakpoints" y de la pestaña "Stack frames" se mostrará el ensamblador para esas direcciones.

Hay atajos de teclado "Nexti" y "Stepi", según lo definido en tu configuración. Normalmente "Ctrl+F5" y "CTRL+F6". Usar "^F" en la pestaña de ensamblador mostrará una potente barra de búsqueda.

La funcionalidad de ensamblador en Seer es nueva. Siéntete libre de sugerir cambios/funcionalidades.

Visualizador de memoria

Al observar el contenido de la memoria bruta en el Visualizador de memoria, se ve así:

MemoriaDesensamblado

Visualizador de arrays

Al observar el contenido de arrays en el Visualizador de arrays, se ve así:

NormalSplineDispersión

Se pueden usar dos arrays como un gráfico X-Y. Por ejemplo, este simple array 'points' forma el contorno X-Y de una forma.

    int main() {
        int points[] = {50,1,20,91,97,35,2,35,79,91,50,1};
        return 0;
    }
Valores XValores YValores XY

Visualizador de estructuras

Al observar el contenido de una estructura C/C++ o una clase C++ en el Visualizador de estructuras, se ve así. Este ejemplo muestra el contenido de "*this" para la clase C++ actual en la que está Seer. Todos los miembros de la estructura que son tipos básicos se pueden editar.

También hay un Visualizador de estructuras básico que es más ligero, pero no puede seguir punteros y no se puede editar.

Visualizador de imágenes

Al observar el contenido de memoria bruta que es una imagen, se puede usar el Visualizador de imágenes.

Soporte/Contacto

Envía un correo electrónico a [email protected] para cualquier error o funcionalidad. O crea una tarea en la página de mi proyecto en GitHub.

Stargazers

Es un mundo maravilloso.

Categorías