l i n u x - u s e r s - g r o u p - o f - d a v i s
L U G O D
 
Next Meeting:
April 21: Google Glass
Next Installfest:
TBD
Latest News:
Mar. 18: Google Glass at LUGOD's April meeting
Page last updated:
2002 Sep 19 17:03

The following is an archive of a post made to our 'vox-tech mailing list' by one of its subscribers.

Report this post as spam:

(Enter your email address)
Re: [vox-tech] gdb: until doesn't work as advertised?
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

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



On Thu, Sep 19, 2002 at 04:33:44PM -0700, Peter Jay Salzman wrote:
> 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.

  Being that I know what until does, I think the text above is very 
clearly written and I doubt this mail will improve on it.  
  "until" steps to the next line of code (preventing the debugger from 
going back to a previous line in the same function because
of a jump), you don't give until a line number, it's more like "run
until the next line of code happens".  Whereas "next" is more like
"stop me at the next executable statement".


  perhaps two samples will help, here I'm using until to run through
the loop quickly...
====
Breakpoint 1, main () at bar.c:5
5	   int i=0, j=0;
(gdb) u
6	   scanf("%d", &i);
(gdb) 
5
8	   while (i) {
(gdb) 
9	      --i;
(gdb) 
10	      ++j;
(gdb) 
11	   }
(gdb) 
13	   return 0;
(gdb) p j
$3 = 5
(gdb) p i
$4 = 0
===

Now here is what happens when you use "next":
===
Breakpoint 1, main () at bar.c:5
5	   int i=0, j=0;
(gdb) n
6	   scanf("%d", &i);
(gdb) 
5
8	   while (i) {
(gdb) 
9	      --i;
(gdb) 
10	      ++j;
(gdb) 
11	   }
(gdb) 
8	   while (i) {
(gdb) 
9	      --i;
(gdb) 
10	      ++j;
(gdb) 
11	   }
(gdb) 
8	   while (i) {
(gdb) 
9	      --i;
(gdb) 
10	      ++j;
(gdb) 
11	   }
(gdb) 
8	   while (i) {
(gdb) 
9	      --i;
(gdb) 
10	      ++j;
(gdb) 
11	   }
(gdb) 
8	   while (i) {
(gdb) 
9	      --i;
(gdb) 
10	      ++j;
(gdb) 
11	   }
(gdb) 
8	   while (i) {
(gdb) 
13	   return 0;
(gdb) 
===

> 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.

  Please send a sample use of gdb where "until" goes through the loop 
more than once.

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

  I'm lost, the sentence above does not make sense.  

    TTFN,
      Mike
_______________________________________________
vox-tech mailing list
vox-tech@lists.lugod.org
http://lists.lugod.org/mailman/listinfo/vox-tech



LinkedIn
LUGOD Group on LinkedIn
Sign up for LUGOD event announcements
Your email address:
facebook
LUGOD Group on Facebook
'Like' LUGOD on Facebook:

Hosting provided by:
Sunset Systems
Sunset Systems offers preconfigured Linux systems, remote system administration and custom software development.

LUGOD: Linux Users' Group of Davis
PO Box 2082, Davis, CA 95617
Contact Us

LUGOD is a 501(c)7 non-profit organization
based in Davis, California
and serving the Sacramento area.
"Linux" is a trademark of Linus Torvalds.

Sponsored in part by:
Sunset Systems
Who graciously hosts our website & mailing lists!