Trazas con gdb

Todo programador ha pasado alguna vez por la experiencia de depurar un programa a golpe de printf(), con los inconvenientes que ello supone, sobre todo recompilar cada vez que se quiere cambiar la información que se imprime en la traza.

Pues resulta que es posible hacer las cosas “bien” :)

Con gdb podemos imprimir los valores de variables de nuestro programa, eso es algo que todos sabemos PERO tambien podemos darle una serie de órdenes a ejecutar al pasar por un breakpoint.

Veamos un ejemplo. Sea el siguiente programa en C:

#include <stdio.h>

int main()
{
        int i;
        double x=2.0f;
        for (i=0; i<64; i++)
                x*=2;
        return 0;
}

Si compilamos con -g (para debug) y lo lanzamos en gdb podemos visualizar los valores de x así:


(gdb) break 8
Breakpoint 1 at 0x400463: file a.c, line 8.
(gdb) commands 1
Type commands for when breakpoint 1 is hit, one per line.
End with a line saying just "end".
>silent
>printf "x=%g\n",x
>cont
>end
(gdb) r
Starting program: /home/slack/a.out
x=2
x=4
x=8
x=16
x=32
x=64
[...]

El “silent” del principio es para que gdb no imprima la información que suele mostrar al pararse en un breakpoint (fichero, número de línea, contador de programa, etc) y la traza salga más limpia.

Por supuesto se pueden hacer mas cosas. gdb permite definir variables externas al programa y ejecución condicional, así que podemos contar las veces que pasamos por algun sitio y lanzar órdenes en momentos concretos y tonterías similares :D

Happy coding!

1 Comment »

  1. MoisesWap said,

    August 19, 2017 @ 16:25 pm

    cialis 5 precio

    http://cialisonlinehocheap.com/ – cialis without prescription

    cialis without doctor prescription

    try it cialis discount

  2. GoilWap said,

    August 19, 2017 @ 19:34 pm

    viagra 50 mg n1

    [url=http://viagragenonlineq.com/]cheap viagra online[/url]

    cheap viagra online

    viagra super active uk site

  3. MoisesWap said,

    August 19, 2017 @ 19:35 pm

    side effects of cialis 20 mg

    [url=http://cialisonlinehocheap.com/]cheap cialis[/url]

    cialis without doctor prescription

    very cheap brand cialis

  4. GoilWap said,

    August 19, 2017 @ 20:29 pm

    muestra de viagra

    viagra buy

    viagra generic

    sale viagra pills

RSS feed for comments on this post · TrackBack URI

Leave a Comment

This blog is protected by Dave\'s Spam Karma 2: 17770 Spams eaten and counting...