[fpc-devel] gdb and dwarf // Re: NONE smart link broken on windows?

Martin Frb lazarus at mfriebe.de
Sat Apr 25 19:55:46 CEST 2026


On 25/04/2026 19:31, Tomas Hajny via fpc-devel wrote:
>> Actually, what debuggers are used by core team members? Anyone still using gdb in some cases (including OOP targets?)
>   .
>   .
>
> Not sure what is meant with OOP in this context, but there's no other option for OS/2 than GDB with stabs (not because there wouldn't be other debuggers available, but because neither me nor anybody else managed to provide support for them (since it wouldn't be "just" implementing support for something else, but rather to solve a bunch of other issues first - at least different object format and different linker).
>

I was wondering if it is an issue just with the GDB I have or a general 
issue.

Though, I did not test stabs.

There is some old, incorrect DWARF code that generates wrong info for
   type TFoo = class
     public const X = 1;
   end;

And, that causes an assert failure in gdb (at least mine).

But, that never was a big issue => likely no one ever spotted it, 
because such constants are rare.
Or well, used to be.

Now TObject itself (in 331) has one of them. And gdb gives an issue.

Then again, no one seems to have been bothered by it (other than me 
occidentally stumbling on it). Because
- I saw no mention
- I saw no attempt to fix it

So I wasn't sure, maybe my GDB is just bad...

Try above, with DWARF.
To inspect the variable
   var MyFoo: TFoo; //MyFoo:= TFoo.create;

in GDB
   p MyFoo^

without deref, gdb only prints the address.

---------------------
There are various fixes.

remove those constants completely from DWARF => but I don't know if that 
is object/record only.  This may be some other

TDebugInfoDwarf.enum_membersyms_callback => which is called in a few places
calls
TDebugInfoDwarf.appendsym_const_member
which adds
           append_entry(DW_TAG_member,false,

That looks like in classes/records only...

------------------
Alternatively make it dependent on godwarfcpp
Because, despite it being wrong => FpDebug deals with it.

(And even one of the DWARF maintainers (I think it was) has recently (on 
a diff subject) told me:
  If the debugger can read it, just use tags/attribs that aren't meant 
in that place.

But, I think that wouldn't be worth it.... Just go with the below instead.

--------------
And of course, lets do DWARF 5
Because there is an official solution.

And for constants it works with GDB (I think, I done a ton of diff 
testing, so hope not to mix up results)

For "class var" also official supported, GDB fails...

Latest GDB has lots of "for each language C, Pascal, ...", and that 
broke some previously working stuff...

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freepascal.org/pipermail/fpc-devel/attachments/20260425/7f7fb1ad/attachment.htm>


More information about the fpc-devel mailing list