Descripción general
gdb proporciona funciones de depuración profundas, como controlar el flujo de ejecución del programa, inspeccionar valores de variables y verificar el estado de la memoria. Es particularmente útil para analizar problemas en binarios compilados.
Funciones principales
- Iniciar/detener programas en ejecución
- Establecer puntos de interrupción (breakpoint)
- Inspeccionar y modificar valores de variables
- Verificar el rastreo de la pila (stack trace)
- Inspeccionar el contenido de la memoria
- Analizar archivos core
Opciones principales
gdb se usa principalmente en modo interactivo, pero puede realizar configuraciones iniciales o ejecutar scripts no interactivos a través de opciones específicas al inicio.
Opciones de inicio/conexión
Comando generado:
Combina los comandos.
Descripción:
`gdb` Ejecutando el comando.
Combina las opciones anteriores para ejecutar virtualmente los comandos junto con la IA.
Ejemplos de uso
Dado que gdb se usa a menudo de forma interactiva, los ejemplos también incluyen comandos que se ingresan en el prompt de gdb.
Iniciar una sesión de depuración básica
gdb ./my_program
Carga el programa compilado (por ejemplo, my_program) con gdb para iniciar una sesión de depuración.
Establecer punto de interrupción y ejecutar
gdb ./my_program
(gdb) b main
(gdb) r
Establece un punto de interrupción en la función main y ejecuta el programa. La ejecución se detiene en el punto de interrupción.
Verificar el valor de una variable
gdb ./my_program
(gdb) b my_function
(gdb) r
(gdb) p my_variable
Después de detenerse en un punto de interrupción, imprime el valor actual de una variable específica.
Analizar un archivo core
gdb ./my_program core.dump
Analiza el archivo core generado por un fallo del programa para examinar el estado del programa en el momento del fallo.
Conectar a un proceso en ejecución
gdb -p 12345
Conecta gdb al proceso con PID 12345, que ya está en ejecución, para depurarlo.
Ejecutar comandos automáticamente al inicio
gdb -ex 'b main' -ex 'r' ./my_program
Establece un punto de interrupción en la función main y ejecuta el programa inmediatamente al iniciar gdb.
Instalación
gdb no se proporciona por defecto en la mayoría de las distribuciones de Linux y debe instalarse como parte de los paquetes de herramientas de desarrollo.
Debian/Ubuntu
sudo apt update && sudo apt install gdb
Instala gdb usando el gestor de paquetes APT.
Fedora/CentOS/RHEL
sudo dnf install gdb
Instala gdb usando el gestor de paquetes DNF o YUM.
Consejos y precauciones
Consejos y precauciones para usar gdb de manera efectiva.
Incluir información de depuración al compilar
Para depurar con gdb, debes compilar el programa con la opción `-g` para incluir información de depuración. De lo contrario, no podrás ver la información del código fuente ni los nombres de las variables.
- Ejemplo: `gcc -g myprogram.c -o myprogram`
Comandos gdb de uso frecuente
Comandos clave de uso frecuente dentro del prompt de gdb.
- `b <nombre_funcion/numero_linea>`: Establecer punto de interrupción (breakpoint)
- `r`: Ejecutar programa (run)
- `n`: Ir a la siguiente línea (next)
- `s`: Entrar en una función (step)
- `p <nombre_variable>`: Imprimir valor de variable (print)
- `c`: Continuar hasta el siguiente punto de interrupción (continue)
- `q`: Salir de gdb (quit)
Uso del modo TUI
El uso del modo de interfaz de usuario de texto (TUI) de gdb puede mejorar la eficiencia de la depuración al permitir ver el código fuente, los registros, el ensamblador, etc., simultáneamente.
- Usar `gdb -tui <programa>` o el comando `layout src` dentro de gdb