GDB significa GNU Project Debugger y es una potente herramienta de depuración para C (junto con otros lenguajes como C++). Le ayuda a husmear dentro de sus programas C mientras se ejecutan y también le permite ver qué sucede exactamente cuando su programa falla. GDB opera en archivos ejecutables que son archivos binarios producidos por el proceso de compilación.
Para fines de demostración, el siguiente ejemplo se ejecuta en una máquina Linux con las especificaciones siguientes.
uname -a>

uname -a
Aprendamos haciendo: –
Iniciar BGF
Vaya al símbolo del sistema de Linux y escriba gdb.
gdb>
gdb
diferencia entre árbol binario y árbol de búsqueda binaria
El mensaje de apertura de GDB le permite saber que está listo para recibir comandos. Para salir de gdb, escriba quit o q.

Abandonar
compila el codigo
A continuación se muestra un programa que muestra un comportamiento indefinido cuando se compila con C99.
Nota: Si un objeto que tiene una duración de almacenamiento automática no se inicializa explícitamente, su valor es indeterminado, donde el valor indeterminado es un valor no especificado o una representación de trampa.
Ahora compila el código. (aquí prueba.c). g bandera significa que puede ver los nombres propios de las variables y funciones en los marcos de su pila, obtener números de línea y ver la fuente a medida que avanza en el ejecutable. -std=bandera C99 implica utilizar el estándar C99 para compilar el código. -o bandera escribe el resultado de la compilación en un archivo de salida.
gcc -std=c99 -g -o test test.C>
gcc -std=c99 -g -o prueba prueba.C
Ejecute GDB con el ejecutable generado
Escriba el siguiente comando para iniciar GDB con el ejecutable compilado.
gdb ./test>
gdb ./prueba
Comandos útiles de GDB:
Aquí hay algunos comandos útiles para comenzar con GDB.
Dominio | Descripción |
---|---|
correr o r | Ejecuta el programa de principio a fin. |
romper o b | Establece un punto de interrupción en una línea particular. |
desactivar | Deshabilita un punto de interrupción |
permitir | Habilita un punto de interrupción deshabilitado. |
siguiente o n | Ejecuta la siguiente línea de código sin profundizar en las funciones. |
paso | Pasa a la siguiente instrucción y se sumerge en la función. |
lista o l | Muestra el código. |
imprimir o p | Muestra el valor de una variable. |
salir o q | Sale del BGF. |
claro | Borra todos los puntos de interrupción. |
continuar | Continúa la ejecución normal |
Mostrar el código
Ahora, escriba l en el indicador de gdb para mostrar el código.

Mostrar el código
Establecer un punto de interrupción
Introduzcamos un punto de interrupción, digamos la línea 5.

Establecer un punto de interrupción
Si desea poner un punto de interrupción en diferentes líneas, puede escribir b número de línea .Por defecto, la lista o muestro solo las primeras 10 líneas.
Ver puntos de interrupción
Para ver los puntos de interrupción, escriba info b.

Ver puntos de interrupción
Deshabilitar un punto de interrupción
Habiendo hecho lo anterior, digamos que cambió de opinión y desea revertirlo. Escriba desactivar b.

Deshabilitar un punto de interrupción
Volver a habilitar un punto de interrupción deshabilitado
Como se marca en el círculo azul, Enb se convierte en n para discapacitados. 9. Para volver a habilitar el punto de interrupción deshabilitado recientemente. Escriba habilitar b.

Volver a habilitar un punto de interrupción deshabilitado
Ejecute el código
Ejecute el código escribiendo ejecutar o r. Si no ha establecido ningún punto de interrupción, el comando ejecutar simplemente ejecutará el programa completo.

Ejecute el código
operador ternario java
Imprimir valores de variables
Para ver el valor de la variable, escriba imprimir nombre de la variable o pag nombre de la variable .

Imprimir valores de variables
Lo anterior muestra los valores almacenados en x en el momento de la ejecución.
Cambiar valores de variables
Para cambiar el valor de la variable en gdb y continuar la ejecución con el valor modificado, escriba set nombre de la variable .
Salida de depuración
La siguiente captura de pantalla muestra los valores de las variables, por lo que es bastante comprensible la razón por la que obtuvimos un valor basura como salida. En cada ejecución de . /prueba recibiremos una salida diferente.
Ejercicio: intente usar set x = 0 en gdb en la primera ejecución y vea el resultado de c.
Salida de depuración
GDB ofrece muchas más formas de depurar y comprender su código, como examinar la pila, la memoria, los subprocesos, manipular el programa, etc. Espero que el ejemplo anterior le ayude a comenzar con gdb.
Conclusión
En este artículo analizamos GDB (GNU Debugger), que es una poderosa herramienta en Linux que se utiliza para depurar programas en C. Hemos analizado algunos de los siguientes pasos para que podamos compilar su código con información de depuración, ejecutar GDB, establecer puntos de interrupción, examinar variables y analizar el comportamiento del programa. También analizamos las características de GDB, como el examen de código, la gestión de puntos de interrupción, la manipulación de variables y el control de ejecución de programas, que nos permiten depurar y resolver problemas de manera eficiente.