GDB (también conocido como depurador de proyectos de GNU) es un software de código abierto y de línea de comandos gratuito que permite a los usuarios y desarrolladores ver lo que está sucediendo 'dentro' de otro programa, mientras que es ejecutado, o por qué una aplicación se bloquea en un cierto punto.
Características de un vistazo
Las características clave incluyen cuatro técnicas diferentes para ayudar a los desarrolladores a detectar errores en el acto, iniciar una aplicación y especificar cualquier cosa que pueda afectar su comportamiento, hacer que un programa se detenga en condiciones específicas, examinar los registros cuando la aplicación falla, cambiar gradualmente las cosas en un programa para experimentar con la corrección de los efectos de un problema y continuar aprendiendo sobre otro error. También admite la depuración de programas escritos en una amplia gama de lenguajes de programación, incluidos C, C ++, Pascal , Ada, Objective-C y muchos otros.
It & rsquo; s es una aplicación de línea de comandos
Depurador de proyectos de GNU es una voluntad siempre será una aplicación de línea de comandos. Para usarlo, debe ejecutar el & ldquo; gdb & rdquo; comando en un emulador de terminal, luego ejecuta la & ldquo; ayuda & rdquo; comando (sin comillas) a el indicador gdb. Además, también puede escribir el & ldquo; ayudar a todos & rdquo; comando para ver una lista de todos los comandos, escriba "ayuda" seguido del nombre del comando para ver la documentación completa, escriba "ayuda" seguido de un nombre de clase para ver una lista de comandos en esa clase, para escribir "palabra apropos" para buscar para comandos relacionados con "palabra".
Lista de clases de comandos
Después de escribir la & ldquo; ayuda & rdquo; comando como se describe arriba, verá una lista de clases de comandos, incluyendo alias (muestra alias de otros comandos), puntos de interrupción (hace que el programa se detenga en ciertos puntos), datos (para examinar datos), archivos (para examinar archivos) , internos (comandos de mantenimiento), oscuros (funciones oscuras), en ejecución (para ejecutar el programa), apilamiento (para examinar la pila), estado (para consultas de estado), soporte (para instalaciones de soporte), puntos de seguimiento (para rastrear la ejecución del programa sin detener el programa) y definido por el usuario (comandos definidos por el usuario).
Plataformas de hardware y sistemas operativos compatibles
GDB se diseñó a partir del offset para que sea una aplicación multiplataforma, que se ejecuta en sistemas operativos convencionales como Microsoft Windows y algunas de las variantes más populares de Linux / UNIX. Es compatible con plataformas de hardware de 32 bits y de 64 bits.
Qué hay de nuevo en esta versión:
- PR gdb / 22824 (descripción engañosa de la nueva función de rbreak Python en el archivo GDB 8.1 NEWS)
- PR gdb / 22849 (ctrl-c no funciona en remoto extendido)
- PR gdb / 22907 ([Regression] gdbserver no funciona con binarios con nombre de archivo)
- PR gdb / 23028 (desarmado inconsistente de vcvtpd2dq)
- PR gdb / 23053 (Corrección -D_GLIBCXX_DEBUG gdb-add-index regression)
- PR gdb / 23127 ([AArch64] GDB no se puede usar para depurar software que usa altas direcciones virtuales)
- Servidor de relaciones públicas / 23158 (gdbserver ya no funciona en Windows)
- Puntos de interrupción de PR / 23210 ([Regresión de 8.1 / 8.2] Dirección de punto de interrupción errónea ajustada de 0xf7fe7dd3 a 0xfffffffff7fe7dd3)
Qué hay de nuevo en la versión 8.1:
- Los puntos de interrupción en las funciones de C ++ ahora están configurados en todos los ámbitos de forma predeterminada (& quot; comodín & quot; coincidencia);
- Soporte para insertar puntos de interrupción en funciones marcadas con etiquetas C ++ ABI;
- Emulación aritmética de coma flotante de destino durante la evaluación de la expresión (requiere MPFR 3.1 o posterior);
- Varias mejoras en Python Scripting;
- Soporte mejorado de Rust; en particular, los objetos Trait ahora pueden inspeccionarse al depurar el código Rust;
- GDB ya no hace suposiciones sobre el tipo de símbolos sin depurar la información para evitar producir resultados erróneos ya menudo confusos;
- Los comandos 'habilitar' y 'deshabilitar' ahora aceptan un rango de ubicaciones de punto de interrupción;
- Nuevo comando 'starti' para iniciar el programa en la primera instrucción;
- Nuevo comando 'rbreak' para insertar un número de puntos de interrupción a través de un patrón de expresión regular (requiere Python);
- El comando 'ptype' ahora admite imprimir el desplazamiento y el tamaño de los campos en una estructura;
- El comando 'gcore' ahora admite volcar todas las asignaciones de memoria ('-a' opción de línea de comandos);
- Nuevos atajos para el modo TUI Single-Key: 'i' para stepi y 'o' para nexti;
- Mejoras de GDBserver:
- Soporte para transmitir variables de entorno a GDBserver;
- Soporte para iniciar procesos inferiores con un directorio de trabajo inicial especificado;
- En los sistemas Unix, soporte para expansión globbing y sustitución de variables de argumentos de línea de comandos inferiores;
- Varias mejoras de finalización;
- El comando utilizado para compilar e insertar código con el comando 'compilar' ahora se puede configurar;
- Nueva opción de línea de comandos '-readnever' para acelerar el inicio de GDB cuando no se necesita depurar información;
- Compatibilidad con las siguientes configuraciones nativas nuevas:
- FreeBSD / aarch64 (aarch64 * - * - freebsd *);
- FreeBSD / arm (brazo * - * - freebsd *);
- Compatibilidad con los siguientes objetivos nuevos:
- FreeBSD / aarch64 (aarch64 * - * - freebsd *);
- FreeBSD / arm (brazo * - * - freebsd *);
- OpenRISC ELF (or1k * - * - elf)
- Se eliminó el soporte para los siguientes objetivos y configuraciones nativas:
- Solaris2 / x86 (i? 86 - * - solaris2. [0-9]);
- Solaris2 / sparc (sparc * - * - solaris2. [0-9]);
Qué hay de nuevo en la versión:
- Crear esta versión de GDB ahora requiere las siguientes herramientas:
- Un compilador C ++ - 11 (por ejemplo, GCC 4.8 o posterior);
- GNU hace la versión 3.81 o posterior.
- Los cambios en esta versión incluyen:
- C ++: soporte para referencias rvalue
- Mejoras de scripts de Python:
- Nuevas funciones para iniciar, detener y acceder a una grabación btrace en ejecución.
- Soporte de referencia Rvalue en gdb.Type.
- intérprete de comandos de GDB:
- Los comandos de usuario ahora aceptan una cantidad ilimitada de argumentos.
- El & quot; eval & quot; comando ahora expande los argumentos definidos por el usuario.
- Compatibilidad con DWARF versión 5
- (tenga en cuenta que su índice .debug_names aún no es compatible).
- Mejoras de GDB / MI:
- Nuevo comando -file-list-shared-libraries para listar las bibliotecas compartidas en el programa.
- Nuevo comando -target-flash-erase, para borrar la memoria flash.
- Soporte para FreeBSD / mips nativos (mips * - * - freebsd)
- Soporte para los siguientes objetivos:
- Sinopsis ARC (arco * - * - elf32)
- FreeBSD / mips (mips * - * - freebsd)
- Mejoras varias:
- La redirección de línea de comandos ahora es compatible con los hosts de MS-Windows.
- Soporte para nombres de subprocesos en MS-Windows.
- Soporte para el registro de PKU en GNU / Linux.
- Soporte para descripciones de Target en sparc32 y sparc64.
- Nuevo comando GDB / CLI para borrar la memoria flash
- las instrucciones de rdrand y rdseed admiten grabación / reproducción.
- Se ha eliminado el soporte para las siguientes características:
- Soporte para programas Java compilados con gcj
- Soporte para las siguientes configuraciones:
- FreeBSD / alpha (alpha * - * - freebsd *)
- GNU / kFreeBSD / alpha (alpha * - * - kfreebsd * -gnu)
¿Qué hay de nuevo en la versión 7.9.1:
- PR build / 18033 (comentario de estilo C ++ utilizado en gdb / iq2000-tdep.c y gdb / compile / compile - *. c)
- PR build / 18298 (el comando & compilar & quot; no puede encontrar el compilador si las herramientas están configuradas con triplete en lugar de cuádruple)
- PR tui / 18311 (SEGV aleatorio cuando se muestran registros en modo TUI)
- PR python / 18299 (excepción cuando se registra una linda impresora global en modo detallado)
- PR python / 18066 (el argumento & quot; palabra & quot; parece estar roto en Command.complete (texto, palabra))
- PR pascal / 17815 (Corregir el comportamiento pascal para los campos de clase con testcase)
- PR python / 18285 (ptype expr-with-xmethod causa SEGV)
Qué hay de nuevo en la versión 7.9:
- Mejoras de scripts en Python.
- Compilación del código fuente e inyección en el inferior.
- Nuevos comandos, opciones, variables / opciones de conveniencia.
- Soporte MIPS SDE (mips * -sde * -elf *).
- Mejor manejo de las señales al depurar programas enrutados.
Qué hay de nuevo en la versión 7.8.2:
- PR symtab / 17642 ([7.8 regression] internal -error: resolve_dynamic_struct: Afirmación `TYPE_NFIELDS (tipo) & gt; 0 'error.)
- PR binutils / 17677 (_bfd_elf_get_synthetic_symtab se ejecuta en O (n ^ 2) complejidad)
- PR gdb / 16215 (SPARC: no se puede calcular CFA para este marco)
- PR gdb / 17525 (target-async: los comandos breakpoint no se ejecutan cuando el programa se ejecuta desde el script -x)
- PR cli / 17828 ([7.8 regresión] -batch -ex r rompe terminal)
Qué hay de nuevo en la versión 7.8.1:
- PR python / 17364 (Necesita mejores nombres de impresoras en bound_registers.py)
- PR build / 17104 (CFLAGS = & quot; -Wall -Wextra & quot; gdb / confgure --with-babeltrace falla)
- PR gdb / 17345 (babeltrace (1.1.2 y posterior) se queja de los datos de ctf generados por GDB)
- PR build / 17298 (gcore: no se pudieron obtener los registros: no existe dicho proceso)
- PR python / 17342 (Xmethod Python no es compatible con Python 3)
- PR python / 17355 (Crash en los filtros de marco Python con arg ilegible)
- PR guile / 17367 (el cálculo de la ruta del gremio es incorrecto cuando el script pkg-config se proporciona como arg a --with-guile)
- PR gdb / 17247 (gdb se congela en la aplicación de subprocesos múltiples)
- PR gdb / 17347 (Regresión: GDB detenido en ejecución con el proceso adjunto)
- PR gdb / 17407 (Regresión para la lectura vDSO de Linux)
- Servidor de relaciones públicas / 17457 (aarch64 / gdbserver: visualización incorrecta de los registros de punto flotante)
- Servidor de relaciones públicas / 17487 (estado- & gt; dr_control_mirror == 0 afirmación fallida en gdbserver en Windows)
- PR gdb / 17472 (con anotaciones, entrada durante la ejecución en primer plano bloquea readline / gdb)
- PR gdb / 17471 (repetir un comando de fondo lo pone en primer plano)
- PR cli / 17300 (bloqueo en modo non-stop con continuar -a & (readline_callback_read_char () llamado sin controlador!))
- PR python / 17372 (Python se cuelga al mostrar ayuda ())
- PR python / 17408 (../../gdb/infrun.c:5256: error interno: switch_back_to_stepped_thread: aserción `! schedlock_applies (1) 'falló.)
Qué hay de nuevo en la versión 7.8:
- Soporte de scripts de Guile.
- Mejoras de scripts en Python.
- Nuevos comandos, opciones, variables / opciones de conveniencia.
- Mejoras de Remote Protocol y GDBserver.
- Nuevas configuraciones de destino (PowerPC64 GNU / Linux little-endian).
- mejoras btrace.
- Compatibilidad con matrices automáticas de longitud variable ISO C99.
- Las & quot; secciones de comparación & quot; el comando ahora funciona en todos los objetivos.
- El & quot; objetivo nativo & quot; ahora el comando se conecta al objetivo nativo.
Qué hay de nuevo en la versión 7.7:
- Compatibilidad mejorada con scripts de Python.
- Algunas mejoras en C ++.
- Nuevos comandos, opciones, variables / opciones de conveniencia.
- Varios nuevos comandos y mejoras de GDB / MI.
- Mejoras de Remote Protocol y GDBserver.
- Nuevas configuraciones de destino (Nios II, TI MSP430).
- GDB Windows x64 desenrollar el soporte de datos.
- Las sondas SDT SystemTap admiten en AArch64 GNU / Linux.
- Compatibilidad con CTF (formato de seguimiento común).
- Nuevos scripts gcore y gdb-add-index.sh.
- Compatibilidad mejorada con el registro / reproducción de roles * -linux.
- Se eliminó el soporte para a.out NetBSD y las configuraciones obsoletas de OpenBSD. Las variantes ELF de estas configuraciones se mantienen compatibles.
- The & quot; set | show remotebaud & quot; los comandos están en desuso en favor de & quot; mostrar | mostrar baud serial & quot;.
Qué hay de nuevo en la versión 7.6.2:
- PR breakpoint / 16251 (error de punto de interrupción del hardware AArch64 después tenedor)
- PR gdb / 16303 (GDB 7.6.1 no funciona con binutils 2.24 en MIPS16 y microMIPS)
Qué hay de nuevo en la versión 7.6.1:
- PR tdep / 15420 (No se pueden depurar programas enhebrados en las versiones más recientes de x86-solaris - Solaris 10, Update 10 o posterior)
- PR remoto / 15455 (paquete remoto QTro roto)
- PR build / 15476 (Error de compilación debido a un tipo de enumeración incompleta en utils.h)
- Servidor de relaciones públicas / 15594 (la compatibilidad tls en 64x32 x86 gdbserver no amplía la dirección a 64 bits)
- Servidor de relaciones públicas / 15075 (dprintf entra en contacto con & quot; siguiente & quot;)
- Servidor de relaciones públicas / 15434 (dprintf utiliza un "continuar" sincrónico incluso en modo sin interrupción)
- PR tui / 14880 (en diseños de registro dividido, resultados ascendentes en el error de aserción en value.c)
- PR c ++ / 15519 (GDB 7.6 es 94 veces más lento que GDB 7.5.1 utilizando un determinado archivo central)
- PR gdb / 15837 (GDB imprime valores de entrada para variables locales)
- PR gdb / 15415 (gdb resuelve enlaces simbólicos al pasar argv [0])
- PR cli / 15603 (CTRL-C ya no puede interrumpir inferior)
- PR gdb / 15604 (gdbserver socket leak 7.5 regression)
Qué hay de nuevo en la versión 7.5:
- Ir a soporte de idiomas.
- Nuevos objetivos (x32 ABI, microMIPS, Renesas RL78, HP OpenVMS ia64).
- Más mejoras de scripts en Python.
- Las sondas SDT (Static Defined Tracing) son compatibles con las sondas SystemTap.
- Mejoras de GDBserver (conexiones de stdio, evaluación del objetivo de las condiciones del punto de interrupción, mejoras del protocolo remoto).
- Otras mejoras varias (posibilidad de detener cuando se carga / descarga una biblioteca compartida, impresión dinámica, etc.).
- Invertir la depuración en ARM.
- El binario & quot; gdbtui & quot; ha sido abandonado y ya no se puede construir. Use & quot; gdb -tui & quot; en cambio.
Qué hay de nuevo en la versión 7.4:
- Las líneas de líneas ambiguas ahora se manejan de forma más consistente.
- Las funciones y archivos poco interesantes ahora se pueden omitir al avanzar con la función & quot; salto & quot; y & quot; omitir archivo & quot; comandos.
- Se agregaron los comandos para establecer y obtener el límite máximo de longitud de un punto de mira de hardware de destino remoto.
- Las secuencias de comandos de Python se mejoraron enormemente.
- Se realizaron muchas otras mejoras, correcciones de errores y cambios generales.
Qué hay de nuevo en la versión 7.1:
- Soporte para nuevos objetivos (incluido un simulador):
- Xilinx MicroBlaze
- Renesas RX
- Las principales características nuevas son:
- Depuración de programas múltiples, lo que permite que el depurador controle más que
- un programa dentro de la misma sesión de GDB.
- Depuración ejecutable de la ejecución independiente (PIE).
- También presenta muchas mejoras y correcciones de errores, que incluyen:
- Se ha ampliado el soporte de Python.
- Mejoras de soporte de C ++ (espacio de nombres, operadores de molde, correcciones de errores)
- Mejoras de soporte de Tracepoint.
- Mejoras de registro de proceso (guardar / restaurar registro de ejecución, hardware
- compatibilidad con Watchpoint).
- Mejoras del protocolo remoto (depuración del kernel de Linux, nuevos paquetes
- para soporte de punto de referencia)
Comentarios que no se encuentran