List Info

Thread: Re: gdb does not print the reference to the base class members




Re: gdb does not print the reference to the base class members
user name
2007-11-20 22:55:16
Hi,

This is the version that I'm using. Will the problem be
solved if I
upgrade to the latest version, GDB version 6.7.1?

Thanks,
Peng

$ gdb --version
GNU gdb 6.6-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 "i386-linux".


On Nov 19, 2007 2:39 AM, Douglas Evans <djegoogle.com> wrote:
> I  believe this is gcc bug 27574.
>
>
> On Nov 18, 2007 4:35 PM, Peng Yu <pengyu.utgmail.com> wrote:
> > Hi,
> >
> > I try to print reference x for the following
problem. But gdb does not
> > print the one in class B refered to class A? Do
you know how to print
> > its value?
> >
> > Thanks,
> > Peng
> >
> > (gdb) b 22
> > Breakpoint 1 at 0x8048694: file main.cc, line 22.
> > (gdb) b 14
> > Breakpoint 2 at 0x8048706: file main.cc, line 14.
> > (gdb) r
> > Failed to read a valid object file image from
memory.
> >
> > Breakpoint 1, main () at main.cc:22
> > 22        B b(10);
> > (gdb) p x
> > $1 = (int &) 0xbffd86cc: 5
> > (gdb) c
> >
> > Breakpoint 2, B (this=0xbffd86c8, a=10) at
main.cc:14
> > 14            std::cout << x <<
std::endl;
> > (gdb) p x
> > No symbol "x" in current context.
> >
> >
> >
> > #include <iostream>
> >
> > class A {
> >   public:
> >     A(int a) : _a(a) { }
> >   protected:
> >     int _a;
> > };
> >
> > class B : public A {
> >   public:
> >     B(int a) : A(a) {
> >       int &x = A::_a;//can not print from gdb,
Line 12
> >       std::cout << x << std::endl;
> >     }
> > };
> >
> >
> > int main(){
> >   int a = 5;
> >   int &x = a;//this one can be printed in gdb,
Line 22
> >   B b(10);
> >   std::cout << x << std::endl;
> > }
> >
>

Re: gdb does not print the reference to the base class members
user name
2007-11-21 00:59:16
Hi.  The bug is in gcc, not gdb, so no change in gdb version
is going
to fix this.  See htt
p://gcc.gnu.org/bugzilla/show_bug.cgi?id=27574
for details of the bug.

On Nov 20, 2007 8:55 PM, Peng Yu <pengyu.utgmail.com> wrote:
> Hi,
>
> This is the version that I'm using. Will the problem be
solved if I
> upgrade to the latest version, GDB version 6.7.1?
>
> Thanks,
> Peng
>
> $ gdb --version
> GNU gdb 6.6-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 "i386-linux".
>
>
>
> On Nov 19, 2007 2:39 AM, Douglas Evans <djegoogle.com> wrote:
> > I  believe this is gcc bug 27574.
> >
> >
> > On Nov 18, 2007 4:35 PM, Peng Yu <pengyu.utgmail.com> wrote:
> > > Hi,
> > >
> > > I try to print reference x for the following
problem. But gdb does not
> > > print the one in class B refered to class A?
Do you know how to print
> > > its value?
> > >
> > > Thanks,
> > > Peng
> > >
> > > (gdb) b 22
> > > Breakpoint 1 at 0x8048694: file main.cc, line
22.
> > > (gdb) b 14
> > > Breakpoint 2 at 0x8048706: file main.cc, line
14.
> > > (gdb) r
> > > Failed to read a valid object file image from
memory.
> > >
> > > Breakpoint 1, main () at main.cc:22
> > > 22        B b(10);
> > > (gdb) p x
> > > $1 = (int &) 0xbffd86cc: 5
> > > (gdb) c
> > >
> > > Breakpoint 2, B (this=0xbffd86c8, a=10) at
main.cc:14
> > > 14            std::cout << x <<
std::endl;
> > > (gdb) p x
> > > No symbol "x" in current context.
> > >
> > >
> > >
> > > #include <iostream>
> > >
> > > class A {
> > >   public:
> > >     A(int a) : _a(a) { }
> > >   protected:
> > >     int _a;
> > > };
> > >
> > > class B : public A {
> > >   public:
> > >     B(int a) : A(a) {
> > >       int &x = A::_a;//can not print from
gdb, Line 12
> > >       std::cout << x <<
std::endl;
> > >     }
> > > };
> > >
> > >
> > > int main(){
> > >   int a = 5;
> > >   int &x = a;//this one can be printed in
gdb, Line 22
> > >   B b(10);
> > >   std::cout << x << std::endl;
> > > }
> > >
> >
>

[1-2]

about | contact  Other archives ( Real Estate discussion Medical topics )