Still not very well, with the old program:
(gdb) start
Temporary breakpoint 1 at 0x80483c1: file 1.c, line 20.
Starting program: /home/teawater/gdb/a.out
warning: the debug information found in "/lib/ld-2.7.so" does not
match "/lib/ld-linux.so.2" (CRC mismatch).
warning: the debug information found in
"/lib/tls/i686/cmov/libc-2.7.so" does not match
"/lib/tls/i686/cmov/libc.so.6" (CRC mismatch).
Temporary breakpoint 1, main () at 1.c:20
20 int b = 0;
(gdb) record
(gdb) n
During symbol reading, incomplete CFI data; unspecified registers
(e.g., eax) at 0x80483be.
21 int c = 1;
(gdb)
24 printf ("a = %d b = %d c = %d\n", a, b, c);
(gdb) hw
Undefined command: "hw". Try "help".
(gdb) hb
Hardware assisted breakpoint 2 at 0x80483cf: file 1.c, line 24.
(gdb) c
Continuing.
a = 0 b = 0 c = 1
a = 3
a = 3 b = 3 c = 1
a = 3 b = 3 c = 2
a = 1 b = 3 c = 2
The next instruction is syscall exit_group. It will make the program
exit. Do you want to stop the program?([y] or n)
Process record: inferior program stopped.
Program received signal SIGTRAP, Trace/breakpoint trap.
0xb7fe3405 in __kernel_vsyscall ()
(gdb) rc
Continuing.
Breakpoint 2, main () at 1.c:24
24 printf ("a = %d b = %d c = %d\n", a, b, c);
(gdb) rc
Continuing.
No more reverse-execution history.
main () at 1.c:20
20 int b = 0;
(gdb) c
Continuing.
Program received signal SIGTRAP, Trace/breakpoint trap.
0x080483d0 in main () at 1.c:24
24 printf ("a = %d b = %d c = %d\n", a, b, c);
(gdb) c
Continuing.
No more reverse-execution history.
0xb7fe3405 in __kernel_vsyscall ()
(gdb) rc
Continuing.
No more reverse-execution history.
main () at 1.c:20
20 int b = 0;
(gdb) c
Continuing.
No more reverse-execution history.
0xb7fe3405 in __kernel_vsyscall ()
(gdb) rc
Continuing.
No more reverse-execution history.
main () at 1.c:20
20 int b = 0;
(gdb) info b
Num Type Disp Enb Address What
2 hw breakpoint keep y 0x080483cf in main at 1.c:24
breakpoint already hit 1 time
(gdb) c
Continuing.
No more reverse-execution history.
0xb7fe3405 in __kernel_vsyscall ()
Thanks,
Hui