ProcessRecord problem with recursion
Marc Khouzam
marc.khouzam@ericsson.com
Fri Mar 20 01:18:00 GMT 2009
Hi,
I'm having problems with ProcessRecord and recursion.
It looks like the reverse-next operation behaves like
reverse-step when dealing with a recursive method.
I have GDB HEAD from the 18th of March, with the patches included in
http://sourceware.org/ml/gdb-patches/2009-03/msg00375.html
http://sourceware.org/ml/gdb-patches/2009-03/msg00005.html
http://sourceware.org/ml/gdb-patches/2009-01/msg00444.html
Here is a program and session that shows the problem:
GNU gdb (GDB) 6.8.50.20090318-cvs
[...]
(gdb) l
1 int factorial(int x) {
2 if (x == 1) return 1;
3 int result = x * factorial(x-1);
4 return result;
5 }
6
7 int main() {
8 factorial(5);
9 return 0;
10 }
(gdb) start
Temporary breakpoint 1 at 0x804847b: file a.cc, line 8.
Starting program: /local/home/lmckhou/testing/a.out
Temporary breakpoint 1, main () at a.cc:8
8 factorial(5);
(gdb) rec
(gdb) s
factorial (x=5) at a.cc:2
2 if (x == 1) return 1;
(gdb) n
3 int result = x * factorial(x-1);
(gdb) n
4 return result;
(gdb) rn
factorial (x=4) at a.cc:5
5 }
Notice how the reverse-next(rn) command jumped to the end
of the next factorial method on the stack (x=4 instead of x=5).
Thanks
Marc
More information about the Gdb
mailing list