Apéndice F — Guía Rápida de GDB¶
Compila siempre con -g (y preferiblemente -O0) para depurar.
Arranque¶
gdb ./programa # cargar
gdb --args ./programa a b # con argumentos
gdb ./programa core # análisis post-mortem de un core dump
Comandos esenciales¶
| Comando | Abreviatura | Acción |
|---|---|---|
run |
r |
Ejecutar el programa |
break f |
b f |
Punto de ruptura en la función f |
break archivo.c:42 |
b |
Ruptura en una línea |
break f if x==0 |
Ruptura condicional | |
next |
n |
Siguiente línea (sin entrar en funciones) |
step |
s |
Siguiente línea (entrando en funciones) |
finish |
Salir de la función actual | |
continue |
c |
Continuar hasta el siguiente breakpoint |
print expr |
p |
Evaluar e imprimir |
display expr |
Imprimir tras cada paso | |
watch x |
Parar cuando x cambie (watchpoint) |
|
backtrace |
bt |
Pila de llamadas |
frame n |
f n |
Seleccionar un marco de la pila |
info locals |
Variables locales | |
info args |
Argumentos de la función | |
list |
l |
Mostrar código fuente |
quit |
q |
Salir |
Inspección de memoria¶
p *ptr # desreferenciar un puntero
p array[0]@10 # imprimir 10 elementos desde array[0]
x/16xb &var # examinar 16 bytes en hexadecimal
p sizeof(struct T)
ptype variable # mostrar el tipo
Trucos útiles¶
set var x = 5 # modificar una variable en caliente
tbreak f # breakpoint temporal (se borra al alcanzarlo)
catch throw # (C++) parar en excepciones
record / reverse-next # depuración reversa (si está soportada)
TUI y diseño
Pulsa Ctrl+X Ctrl+A para activar la interfaz TUI (código + comandos).
Para una experiencia más cómoda, prueba gef, pwndbg o cgdb.
Más en el Capítulo 29.