Depurador GNU

La versión estable se desprotegió el 24 de septiembre de 2022 . Hay cambios no verificados en plantillas o .
Depurador GNU
Tipo de depurador y paquete GNU [d]
Autor proyecto GNU
Desarrollador comunidad
Escrito en C y Esquema
Sistema operativo GNU/Linux [3] , BSD [3] , Microsoft Windows [3] y macOS [3]
Idiomas de la interfaz inglés
Primera edición 1986 [1]
ultima versión
Licencia GPL 3.0+ [3]
Sitio web gnu.org/software/… (  inglés)
 Archivos multimedia en Wikimedia Commons

GNU Debugger es un depurador  portátil de proyectos GNU que se ejecuta en muchos sistemas similares a UNIX y puede depurar muchos lenguajes de programación, incluidos C , C++ , Free Pascal , FreeBASIC , Ada , Fortran y Rust . GDB es software libre con licencia GPL .

Historia

Escrito originalmente en 1988 por Richard Stallman . Estaba basado en el depurador DBX que venía con la distribución BSD . De 1990 a 1993  _ el proyecto fue apoyado por John Gilmour mientras estaba con Cygnus Solutions . Actualmente, el desarrollo está siendo coordinado por el Comité Directivo de GDB designado por la Free Software Foundation . [cuatro]

Historial de lanzamientos

Detalles técnicos

Características

GDB ofrece amplias herramientas para el seguimiento y control de la ejecución de programas informáticos. El usuario puede cambiar las variables internas de los programas e incluso llamar a funciones, independientemente del comportamiento normal del programa. GDB puede depurar archivos ejecutables en formato a.out , COFF (incluidos los archivos ejecutables de Windows), ECOFF , XCOFF , ELF , SOM , usar información de depuración en formatos stabs , COFF , ECOFF , DWARF , DWARF2 [6] . El formato DWARF2 proporciona las mayores capacidades de depuración.

GDB se desarrolla activamente. Por ejemplo, la versión 7.0 agregó soporte para "depuración reversible", lo que le permite rebobinar el proceso de ejecución para ver qué sucedió. También en la versión 7.0, se agregó soporte para secuencias de comandos de Python .

Se han creado otras herramientas de depuración para trabajar con GDB, como detectores de fugas de memoria.[ especificar ] .

Soporte de Sistemas Embebidos y Multiplataforma

GDB se puede compilar para admitir aplicaciones para múltiples plataformas de destino y cambiar entre ellas durante una sesión de depuración. Procesadores compatibles con GDB ( 2003 ): Alpha , ARM , H8/300 , System/370 , System/390 , x86 y x86-64 , IA-64 ( Itanium ), Motorola 68000 , MIPS , PA-RISC , PowerPC , SuperH , SPARC , VAX , A29K , ARC , AVR , CRIS , D10V , D30V , FR-30 , FR-V , Intel i960 , M32R , 68HC11 , Motorola 88000 , MCORE , MN10200 , MN10300 , NS32K , Stormy16 , V850 , S-SKY y Z8000 (las versiones más recientes probablemente no admitan algunos de estos). Las plataformas de destino en las que no se puede ejecutar GDB, en particular , los sistemas integrados , se pueden admitir utilizando el simulador incorporado ( procesadores ARM , AVR ) o las aplicaciones para ellos se pueden compilar con rutinas especiales que proporcionan depuración remota bajo el control de GDB ejecutándose en la computadora del desarrollador. El archivo de entrada para la depuración, por regla general, no es un archivo binario flasheable, sino un archivo en uno de los formatos que admiten información de depuración, principalmente ELF, del cual se extrae posteriormente el código binario para flashear utilizando utilidades especiales.

Depuración remota

Con la depuración remota, GDB se ejecuta en una máquina y el programa que se está depurando se ejecuta en otra. La comunicación se realiza según un protocolo especial a través de un puerto serie o TCP/IP. El protocolo para interactuar con el depurador es específico de GDB, pero el código fuente de las subrutinas necesarias se incluye en el archivo del depurador. Alternativamente, el programa gdbserver [7] del paquete GDB que utiliza el mismo protocolo se puede ejecutar en la plataforma de destino para realizar funciones de bajo nivel, como establecer puntos de interrupción y acceder a registros y memoria.

El mismo modo se utiliza para interactuar con el depurador de kernel de Linux incorporado KGDB. Con él, un desarrollador puede depurar el núcleo como un programa normal: establecer puntos de interrupción, recorrer el código, ver variables. El depurador incorporado requiere dos máquinas conectadas a través de Ethernet o un cable serie, una que ejecuta GDB y la otra que ejecuta el kernel que se va a depurar.

Interfaz de usuario

De acuerdo con la ideología de los principales desarrolladores de FSF [8] , en lugar de su propia interfaz gráfica de usuario, GDB brinda la capacidad de conectarse a IDE externos que controlan shells gráficos o usan una interfaz de texto de consola estándar. Para interactuar con programas externos, puede usar un lenguaje de cadenas de texto (como se hizo en las primeras versiones del shell DDD ), un lenguaje de control de texto gdb/mio una interfaz para el lenguaje Python .

Se crearon interfaces como DDD , cgdb , GDBtk/Insight y "modo GUD" en Emacs . Los IDE que pueden interactuar con GDB son Code::Blocks , Qt Creator , KDevelop , Eclipse , NetBeans , Lazarus , Geany .

Ejemplos de comandos

programa gdb depurar el programa "programa" (desde el shell de comandos)
romper principal establecer un punto de interrupción en main
ejecutar -v ejecuta el programa descargado con la opción -v
bt backtrace (en caso de bloqueo del programa)
registros de información mostrar todos los registros
desarmar $pc-32, $pc+32 desmontar el código
desmontar principal desmontar la función principal
establecer desmontaje-sabor intel mostrar los comandos del ensamblador en la sintaxis de Intel

Ejemplo de uso

GNU gdb 6.5 Copyright (C) 2006 Fundación de Software Libre, Inc. GDB es software libre, cubierto por la Licencia Pública General GNU, y usted está bienvenido a cambiarlo y/o distribuir copias del mismo bajo ciertas condiciones. Escriba "mostrar copia" para ver las condiciones. No hay absolutamente ninguna garantía para GDB. Escriba "mostrar garantía" para obtener más detalles. Este GDB se configuró como "i486-slackware-linux". (gdb) ejecutar Programa de inicio: /home/sam/programming/crash Lectura de símbolos del objeto compartido leído de la memoria de destino... hecho. Sistema cargado suministrado DSO en 0xc11000 Este programa demostrará gdb Programa recibido señal SIGSEGV, Fallo de segmentación. 0x08048428 en function_2 (x=24) en crash.c:22 22 vuelta *y; (gdb) editar (gdb) shell gcc crash.c -o crash -gstabs+ (gdb) ejecutar El programa que se está depurando ya se ha iniciado. ¿Empezar desde el principio? (t o n) y advertencia: no se puede cerrar "objeto compartido leído desde la memoria de destino": archivo en formato incorrecto `/home/sam/programming/crash' ha cambiado; releer símbolos. Programa de inicio: /home/sam/programming/crash Lectura de símbolos del objeto compartido leído de la memoria de destino... hecho. Sistema cargado suministrado DSO en 0xa3e000 Este programa demostrará gdb 24 El programa salió normalmente. (gdb) salir

Después de encontrar la causa del error de segmentación , se edita el programa y se corrige el error. El programa corregido se reconstruye con GCC y se ejecuta.

Desventajas

Los simuladores de sistemas integrados incluidos en GDB, en particular para la plataforma AVR , solo pueden admitir el núcleo del procesador, pero no los periféricos del controlador.

Notas

  1. Conferencia de Richard Stallman en el Royal Institute of Technology, Suecia (1986-10-30)
  2. ¡Lanzamiento de Brobecker J. GDB 12.1!  (Inglés) - 2022.
  3. 1 2 3 4 5 Directorio de software libre
  4. Comité Directivo del BGF (enlace no disponible) . Consultado el 11 de mayo de 2008. Archivado desde el original el 5 de agosto de 2012. 
  5. Noticias del BGF . Consultado el 7 de julio de 2012. Archivado desde el original el 23 de julio de 2012.
  6. Gdb Internals - Manejo de símbolos . Consultado el 15 de mayo de 2020. Archivado desde el original el 22 de septiembre de 2020.
  7. Depuración remota con GDB y GDBserver . Consultado el 9 de mayo de 2022. Archivado desde el original el 12 de agosto de 2021.
  8. Eric Raymond: El arte de la programación Unix ISBN 5-8459-0791-8

Literatura

Enlaces