This is the mail archive of the
gdb@sourceware.org
mailing list for the GDB project.
ProcessRecord problem with recursion
- From: "Marc Khouzam" <marc dot khouzam at ericsson dot com>
- To: <gdb at sourceware dot org>
- Date: Thu, 19 Mar 2009 21:13:46 -0400
- Subject: ProcessRecord problem with recursion
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