GDB Bueno venga, ya vale de llenar nuestro codigo de printf("kk") para depurarlo y vamos a usar el gdb. Una herramienta oscura a la par que poderosa. Aqui anoto los cuatro comandos basicos.
Preparando el terreno Primero compilamos el codigo con el flag -g para una mejor compilacion.
Se genera una tabla de simbolos mejorada
linuz# gcc -g pogama.c -o pogama
Aunque si queremos una mayor depuracion podemos usar el flag -ggdb que generara informacion mas especifica de gdb.
linuz# gcc -ggdb pogama.c -o pogama
Ejecutamos gdb especificando el programa binario que deseamos depurar.
linuz# gdb pogama
GNU gdb 4.16
(gdb)
Podemos buscar ayuda con help o ?
Los comandos mas utiles: run
Ejecuta el programa

(gdb) run
list list [m,n]
Muestra las lineas de codigo fuente

(gdb) list
print print variable
Muestra el contenido de una variable

(gdb) print i
whatis whatis variable
Muestra el tipo de variable

(gdb) whatis i
break break [linea | funcion] if expr
Puntos de ruptura para detener la ejecucion de codigo en determinado momento
o condicion.

(gdb) break 16 if variable == 0
set set variable nombrevar = valor
Establece el valor de una variable. Util despues de un punto de ruptura.

(gdb) set variable cabala = 777
Mas informacion: tira del manual...