Mirror of the gdb mailing list
 help / color / mirror / Atom feed
* Variables created with -var-create going out of scope unexpectedly?
@ 2008-11-20 13:47 Srinath Avadhanula
  2008-11-20 14:00 ` Vladimir Prus
  0 siblings, 1 reply; 4+ messages in thread
From: Srinath Avadhanula @ 2008-11-20 13:47 UTC (permalink / raw)
  To: gdb

Hi,

I am trying to play around with GDB/MI recently, in particular with
the -var-create command. I see that a variable created with
-var-create goes out of scope too quickly. In particular, if I later
do -var-update, I see that in_scope="false"... The following is the
test program and the GDB session which illustrates my question.

Basically, I put a breakpoint in the function foo below. This function
gets called 4 times with 2 different stacks. If I use "display a" the
first time I hit the breakpoint, the variable a gets displayed on all
subsequent hits. However, if I do instead "-var-create - * a" the
first time the breakpoint is hit and then do "-var-update 1 *" each
subsequent time the break-point is hit, I only see 'in_scope="true"'
the two times when foo() is reached with exactly the same stack. Is
this expected? Is there an equivalent of gdb's "display" command for
GDB/MI?

The program versions are:

gdb: GNU gdb 6.4.90-debian
g++: g++ (GCC) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)

Regards,
Srinath

~/code/gdbmiserver/test
$ cat -n foo.cpp
     1  #include <stdio.h>
     2
     3  void foo(double a)
     4  {
     5      printf("a = %g\n", a);
     6  }
     7
     8  void bar(double a)
     9  {
    10      foo(a);
    11  }
    12
    13  int main()
    14  {
    15      foo(2.5);
    16      bar(3.5);
    17      foo(4.5);
    18      bar(5.5);
    19  }

~/code/gdbmiserver/test
$ g++ -g -o foo foo.cpp

~/code/gdbmiserver/test
$ gdb foo
GNU gdb 6.4.90-debian
Copyright (C) 2006 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu"...Using host
libthread_db library "/lib/libthread_db.so.1".

(gdb) b foo.cpp:5
Breakpoint 1 at 0x400565: file foo.cpp, line 5.
(gdb) r
Starting program: /mathworks/home/savadhan/code/gdbmiserver/test/foo

Breakpoint 1, foo (a=2.5) at foo.cpp:5
5           printf("a = %g\n", a);
(gdb) display a
1: a = 2.5
(gdb) interpreter mi '-var-create - * a'
^done,name="var1",numchild="0",type="double"
(gdb)
(gdb) interpreter mi '-var-update 1 *'
^done,changelist=[]
(gdb)
(gdb) c
Continuing.
a = 2.5

Breakpoint 1, foo (a=3.5) at foo.cpp:5
5           printf("a = %g\n", a);
1: a = 3.5
(gdb) interpreter mi '-var-update 1 *'
^done,changelist=[{name="var1",in_scope="false"}]
(gdb)
(gdb) c
Continuing.
a = 3.5

Breakpoint 1, foo (a=4.5) at foo.cpp:5
5           printf("a = %g\n", a);
1: a = 4.5
(gdb) interpreter mi '-var-update 1 *'
^done,changelist=[{name="var1",value="4.5",in_scope="true",type_changed="false"}]
(gdb)
(gdb) c
Continuing.
a = 4.5

Breakpoint 1, foo (a=5.5) at foo.cpp:5
5           printf("a = %g\n", a);
1: a = 5.5
(gdb) interpreter mi '-var-update 1 *'
^done,changelist=[{name="var1",in_scope="false"}]
(gdb)
(gdb) c
Continuing.
a = 5.5

Program exited normally.
(gdb) q

~/code/gdbmiserver/test
$


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: Variables created with -var-create going out of scope unexpectedly?
  2008-11-20 13:47 Variables created with -var-create going out of scope unexpectedly? Srinath Avadhanula
@ 2008-11-20 14:00 ` Vladimir Prus
  2008-11-20 14:33   ` Srinath Avadhanula
  0 siblings, 1 reply; 4+ messages in thread
From: Vladimir Prus @ 2008-11-20 14:00 UTC (permalink / raw)
  To: gdb

Srinath Avadhanula wrote:

> Hi,
> 
> I am trying to play around with GDB/MI recently, in particular with
> the -var-create command. I see that a variable created with
> -var-create goes out of scope too quickly. In particular, if I later
> do -var-update, I see that in_scope="false"... The following is the
> test program and the GDB session which illustrates my question.
> 
> Basically, I put a breakpoint in the function foo below. This function
> gets called 4 times with 2 different stacks. If I use "display a" the
> first time I hit the breakpoint, the variable a gets displayed on all
> subsequent hits. However, if I do instead "-var-create - * a" the
> first time the breakpoint is hit and then do "-var-update 1 *" each
> subsequent time the break-point is hit, I only see 'in_scope="true"'
> the two times when foo() is reached with exactly the same stack. Is
> this expected? Is there an equivalent of gdb's "display" command for
> GDB/MI?

GDB/MI documentation in CVS HEAD describes this.

- Volodya



^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: Variables created with -var-create going out of scope unexpectedly?
  2008-11-20 14:00 ` Vladimir Prus
@ 2008-11-20 14:33   ` Srinath Avadhanula
  2008-11-20 15:37     ` Vladimir Prus
  0 siblings, 1 reply; 4+ messages in thread
From: Srinath Avadhanula @ 2008-11-20 14:33 UTC (permalink / raw)
  To: Vladimir Prus; +Cc: gdb

Hi Volodya,

On Thu, Nov 20, 2008 at 8:59 AM, Vladimir Prus
<vladimir@codesourcery.com> wrote:
>> first time the breakpoint is hit and then do "-var-update 1 *" each
>> subsequent time the break-point is hit, I only see 'in_scope="true"'
>> the two times when foo() is reached with exactly the same stack. Is
>> this expected? Is there an equivalent of gdb's "display" command for
>> GDB/MI?
>
> GDB/MI documentation in CVS HEAD describes this.
>

Thanks for the info! Sorry for my ignorance, but I cannot seem to
figure out how to get the CVS HEAD of the GDB/MI documentation. Could
you please point me to it? I tried downloading a few things from the
GDB web-site, but couldn't figure out the latest version...

Also, if

http://sourceware.org/gdb/onlinedocs/gdb_25.html#SEC413

is the latest version, it doesn't seem to make any special mention of
-var-create with respect to going out of scope...

Regards,
Srinath

PS: Sorry Volodya for the extra email. I forgot to email the group last time.


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: Variables created with -var-create going out of scope unexpectedly?
  2008-11-20 14:33   ` Srinath Avadhanula
@ 2008-11-20 15:37     ` Vladimir Prus
  0 siblings, 0 replies; 4+ messages in thread
From: Vladimir Prus @ 2008-11-20 15:37 UTC (permalink / raw)
  To: Srinath Avadhanula; +Cc: gdb

On Thursday 20 November 2008 17:32:21 Srinath Avadhanula wrote:
> Hi Volodya,
> 
> On Thu, Nov 20, 2008 at 8:59 AM, Vladimir Prus
> <vladimir@codesourcery.com> wrote:
> >> first time the breakpoint is hit and then do "-var-update 1 *" each
> >> subsequent time the break-point is hit, I only see 'in_scope="true"'
> >> the two times when foo() is reached with exactly the same stack. Is
> >> this expected? Is there an equivalent of gdb's "display" command for
> >> GDB/MI?
> >
> > GDB/MI documentation in CVS HEAD describes this.
> >
> 
> Thanks for the info! Sorry for my ignorance, but I cannot seem to
> figure out how to get the CVS HEAD of the GDB/MI documentation. Could
> you please point me to it? I tried downloading a few things from the
> GDB web-site, but couldn't figure out the latest version...
> 
> Also, if
> 
> http://sourceware.org/gdb/onlinedocs/gdb_25.html#SEC413
> 
> is the latest version, it doesn't seem to make any special mention of
> -var-create with respect to going out of scope...

In general, you can get CVS HEAD sources using instructions at:

	http://www.gnu.org/software/gdb/current/

But I've just realized the patch is not actually checked in yet. Please see:

	http://permalink.gmane.org/gmane.comp.gdb.patches/44757

for a doc patch -- search for "floating" varobjs.

- Volodya


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2008-11-20 15:37 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2008-11-20 13:47 Variables created with -var-create going out of scope unexpectedly? Srinath Avadhanula
2008-11-20 14:00 ` Vladimir Prus
2008-11-20 14:33   ` Srinath Avadhanula
2008-11-20 15:37     ` Vladimir Prus

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox