[fpc-devel] Dwarf3 and the encoding of classes
    Joost van der Sluis 
    joost at cnoc.nl
       
    Sun Jan  9 17:56:30 CET 2011
    
    
  
On Mon, 2011-01-03 at 13:38 +0100, Jonas Maebe wrote:
> On 03 Jan 2011, at 13:29, Joost van der Sluis wrote:
> 
> > This has nothing to do with gdb, but with the debug-information that  
> > fpc
> > (-gw3) generates. Now it handles classes as if they are not  
> > pointers. I
> > think that this is closer to how a class is defined in Pascal. A class
> > is (imho) not a pointer, just like an ansistring is not a pointer.  
> > After
> > all, we don't use AnObject^.Destroy....
> 
> Delphi also allows skipping the ^ for e.g. pointers to records. A  
> difference is that it does not allow using ^ at all for classes, but  
> still...
> 
> Also, in Delphi (and in FPC's Delphi mode) untyped pointers can be  
> automatically converted by the compiler into class types, so they are  
> quite close. I don't really see a big advantage in changing the  
> encoding of class types in the debug information, especially since  
> even now stuff like classinstance.fieldname works.
I've done some more tests with -gw2. 'p classinstance' gives you the
address of the class-instance and not the values within the class.
That's a big issue to me. To show the class, you have to use 'p
classinstance^', which is nonsense in a Pascal-way of view. 
And if the classinstance is nil it shows '0x0' and not 'nil'. 'p
@classinstance' will give you rubbish. 
Otoh, with gw3, this all works. The patch to show 'nil' when a class is
not assigned for gdb is two lines. And to be honest, I think the 'p
classinstance1=classinstance2' case is a real corner-case. The cases
explained above are more important, imho. (Delphi does allow
class-comparisons in the debugger, but you can't add or substract
anything form a classinstance. With gdb (gw2) you can)
Overall, I think that omitting the implicit-pointer as Dwarf-3 does now,
is the right way to go, so I'll continue with that.
Joost.
    
    
More information about the fpc-devel
mailing list