[vox-tech] gdb: until doesn't work as advertised?

Peter Jay Salzman vox-tech@lists.lugod.org
Thu, 19 Sep 2002 16:33:44 -0700


from the gdb user manual:

until
-----
Continue running until a source line past the current line, in the
current stack frame, is reached. This command is used to avoid single
stepping through a loop more than once. It is like the next command,
except that when until encounters a jump, it automatically continues
execution until the program counter is greater than the address of the
jump. This means that when you reach the end of a loop after single
stepping though it, until makes your program continue execution until it
exits the loop.


now consider the following code:

#include <stdio.h>     line 1

int main(void)
{
   int i=0, j=0;
   scanf("%d", &i);

   while (i) {         line 8
      --i;             line 9
      ++j;             line 10
   }                   line 11
                       line 12
   return 0;
}


if you place a breakpoint at line 9  "--i;", then:

run
5

then use until, then gdb will go through the loop 5 times, just like how
next would.   i let the user input what "i" is so that gcc wouldn't
unroll the loop.  but until STILL isn't working as advertised.

also, "until 12" doesn't leave the while loop either, however, "until
12" does.

any comments?   does until only "work" on for loops?

pete