Mirror of the gdb mailing list
 help / color / mirror / Atom feed
From: "Klaus Rudolph" <lts-rudolph@gmx.de>
To: gdb@sourceware.org
Subject: automated cast to different data type possible?
Date: Wed, 11 May 2011 09:09:00 -0000	[thread overview]
Message-ID: <20110511090850.28500@gmx.net> (raw)

Hi all,

I have the following data structures:

class Base
{
enum Type
{
TYPE_A,
TYPE_B,
...
} type;

public:
  Base(Type _type):type(_type){}
 };

class A: pubic Base {

   int x;
   int y;
   ptr ...

public:
   A():Base(TYPE_A){}

};

class B: public Base {
   B():Base(TYPE_B){}
   double a;
   double b;
   int c;
   ptr ...
   ptr ...
};

Base* ptr1=new A;
Base* ptr2=new B;

---------

Now I want to debug ptr1. print returns only the output for base. OK
But I want to see, the type is a object of class A.
Writing a pretty printer for Base is possible and could output
as a type of A or B which works fine.

BUT! and that is the my question:
The pretty printer only give an output which "looks like" a type of A or B.
In combination with ddd I am not able to dereference the ptr pointers in A or B, because the object of type Base contains no ptr element!

On command line:
graph display ptr1;
<double click on ptr1> -> 
graph display *ptr1
a new window in graph view is visible with type Base
if I have a pretty printer inserted, I get a output which looks like
an object of class A.
But: if I now do a <double click> on the ptr elements, I got:
no element ptr... in Base.

Is there any chance to handle that kind of automatism in a python script?
To make the classes virtual is no solution, the data structure is fixed and used for persistent storage.

Thanks
 Klaus









-- 
NEU: FreePhone - kostenlos mobil telefonieren und surfen!			
Jetzt informieren: http://www.gmx.net/de/go/freephone


             reply	other threads:[~2011-05-11  9:09 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-05-11  9:09 Klaus Rudolph [this message]
2011-05-11 21:00 ` Tom Tromey
2011-05-12  6:17   ` Klaus Rudolph
2011-05-12 16:06     ` Tom Tromey
2011-05-12 17:13       ` André Pönitz
2011-05-15 14:17         ` Klaus Rudolph
2011-05-16 11:43           ` André Pönitz
2011-05-16 17:15             ` Klaus Rudolph
2011-05-24 13:48               ` André Pönitz

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20110511090850.28500@gmx.net \
    --to=lts-rudolph@gmx.de \
    --cc=gdb@sourceware.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox