Puede ser útil especificar su plataforma, versión de GDB y secuencia exacta de comandos GDB que utilizó.
Aquí es lo que veo (BGF parece funcionar muy bien):
$ gcc -g test.c
$ gdb a.out
GNU gdb (GDB) 6.8.50.20090430-cvs
Copyright (C) 2009 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-unknown-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
(gdb) list
1 #include <stdio.h>
2 #include <stdlib.h>
3
4 int main(int argc, char** argv){
5 printf("Hello world\n");
6
7 int a = 12;
8 a = 10;
9 return 0;
10 }
11
(gdb) b 5
Breakpoint 1 at 0x4004a7: file test.c, line 5.
(gdb) r
Breakpoint 1, main (argc=1, argv=0x7fffffffdb28) at test.c:5
5 printf("Hello world\n");
(gdb) watch a
Hardware watchpoint 2: a
(gdb) c
Hello world
Hardware watchpoint 2: a
Old value = 0
New value = 12
main (argc=1, argv=0x7fffffffdb28) at test.c:8
8 a = 10;
(gdb) c
Hardware watchpoint 2: a
Old value = 12
New value = 10
main (argc=1, argv=0x7fffffffdb28) at test.c:9
9 return 0;
(gdb) c
Watchpoint 2 deleted because the program has left the block in
which its expression is valid.
0x00007ffff7ab3033 in exit() from /lib/libc.so.6
(gdb) c
Program exited normally.
(gdb) q
¿Compiló con información de depuración (-g) y está seguro de que está utilizando la versión de depuración? – dirkgently