GDB significa GNU Project Debugger y es una poderosa herramienta de depuración para C (junto con otros lenguajes como C++). Le ayuda a hurgar 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 siguientes especificaciones.
Aprendamos haciendo: –
1. Vaya a la línea de comandos de Linux y escriba «gdb».
El indicador de apertura de Gdb le permite saber que está listo para los comandos. Para salir de gdb, escriba quit o q.
2. 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ático no se inicializa explícitamente, su valor es indeterminado, donde el valor indeterminado es un valor no especificado o una representación de captura.
3. Ahora compila el código. (aquí prueba.c).
La bandera g significa que puede ver los nombres propios de las variables y funciones en sus marcos de pila, obtener números de línea y ver la fuente a medida que avanza en el ejecutable.
El indicador -std=C99 implica usar el estándar C99 para compilar el código.
-o marca escribe la salida de compilación en un archivo de salida.
4. Ejecute gdb con el ejecutable generado.
Aquí hay algunos comandos útiles para comenzar con gdb para el ejemplo anterior: –
ejecutar o r –> ejecuta el programa de principio a fin.
break o b –> establece un punto de interrupción en una línea en particular.
deshabilitar -> deshabilitar un punto de interrupción.
habilitar -> habilitar un punto de interrupción deshabilitado.
next o n -> ejecuta la siguiente línea de código, pero no se sumerja en las funciones.
paso -> ir a la siguiente instrucción, sumergirse en la función.
list o l –> muestra el código.
print o p –> utilizado para mostrar el valor almacenado.
quit o q –> sale de gdb.
borrar -> para borrar todos los puntos de interrupción.
continuar –> continuar con la ejecución normal.
5. Ahora, escriba «l» en el indicador de gdb para mostrar el código.
6. Introduzcamos un punto de ruptura, digamos la línea 5.
If you want to put breakpoint at different lines, you can type “b line_number“.By default “list or l” display only first 10 lines.
7.Para ver los puntos de interrupción, escriba «info b».
8. Habiendo hecho lo anterior, digamos que cambió de opinión y desea revertir.
Escriba «deshabilitar b».
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 reciente. Escriba «habilitar b».
10. 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.
11. Para ver el valor de la variable, escriba «print variable_name o p variable_name «.
The above shows the values stored at x at time of execution.
12. Para cambiar el valor de la variable en gdb y continuar la ejecución con el valor modificado, escriba «set variable_name «.
13. La siguiente captura de pantalla muestra los valores de las variables a partir de las cuales es bastante comprensible la razón por la que obtuvimos un valor basura como salida. En cada ejecución de ./test recibiremos resultados diferentes.
Ejercicio: intente usar set x = 0 en gdb en la primera ejecución y vea el resultado de c.
GDB ofrece muchas más formas de depurar y comprender su código, como examinar la pila, la memoria, los hilos, manipular el programa, etc. Espero que el ejemplo anterior lo ayude a comenzar con gdb.
Publicación traducida automáticamente
Artículo escrito por thelittleguy046 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA