This is the mail archive of the
gdb@sourceware.org
mailing list for the GDB project.
automated cast to different data type possible?
- From: "Klaus Rudolph" <lts-rudolph at gmx dot de>
- To: gdb at sourceware dot org
- Date: Wed, 11 May 2011 11:08:50 +0200
- Subject: automated cast to different data type possible?
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