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 .
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]
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 ] .
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.
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.
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 .
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 |
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.
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.
Proyecto GNU | ||
---|---|---|
Historia | ||
Licencias |
| |
Software _ |
| |
Alusiones personales | ||
Otros temas |
|