logo

BGF (Introducción paso a paso)

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>
tu nombre

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.

salir_gdb

Abandonar

compila el codigo

A continuación se muestra un programa que muestra un comportamiento indefinido cuando se compila con C99. lista-1



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.

punto de interrupción

Mostrar el código

Establecer un punto de interrupción

Introduzcamos un punto de interrupción, digamos la línea 5.

información_b

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.

desactivar

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.

habilitar-1

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.

primer intento

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.

imprimir_valor_x

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.