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

Martin Frb lazarus at mfriebe.de
Sun Apr 26 14:45:27 CEST 2026


On 25/04/2026 19:55, Martin Frb via fpc-devel wrote:
> 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).
...
> 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.

I did re-run some of my gdb tests v12 and v17 on Win64

When forcing "set language = c++" then gdb accepts the dwarf info.
Any of
- the current wrong one
- DWRAF-5 TAG_Variable  (even when dwarf version is set to lower than 5)

When the language is pascal, gdb will fail that in any case. It will try 
to check for a bit offset, but as their is no bitoffset attribute, that 
triggers an assert.
That is an issue in gdb.

I found comments in gdb that state "there may be other value, but we 
haven't seen them used, so they aren't implemented" => and gdb 
introduces more and more language dependent code.

------------------------
In any case, that means (probably / not explicitly tested) when using 
-godwarfcpp  the current info is workable for gdb.

Question is, what to do when -godwarfcpp isn't given?
Assume that the debugger will be FpDebug (that is only true for a few 
platforms)

Add a -godwarfFpDebug ?

Just apply the Dwarf-5 MR 
https://gitlab.com/freepascal.org/fpc/source/-/merge_requests/1447
, and fix it for Dwarf-5 => making Dwarf-5 the go to for fpdebug? (and 
any other debugger if it implements this)
(adding TAG_Variable for that case would be easy)


More information about the fpc-devel mailing list