Given a simple module:

        // dmd -g file.d
        void main()
        {
                int i = 3;
                i++;
        }


We can debug it using gdb (patched or no) like so:

        $ gdb file
        GNU gdb 6.8... <snip>
        (gdb) list _Dmain
        1       void main()
        2       {
        3               int i = 3;
        4               i++;
        5       }
        6
        (gdb)

And then set break points and variables to watch as we please. Even over multiple modules. But as soon as a dynamic array shows anywhere, in any fashion, in any module...
        
        // dmd -g file.d
        void main()
        {
                int i = 3;
                i++;
                bool[] a = null;  // <--
        }

        $ gdb file
        <snip>
        (gdb) list _Dmain
        (gdb) list _Dmain
        Die: DW_TAG_<unknown> (abbrev = 5, offset = 471)
                has children: FALSE
                attributes:
                        DW_AT_byte_size (DW_FORM_data1) constant: 8
                        DW_AT_type (DW_FORM_ref4) constant ref: 462
                        (adjusted)
        Dwarf Error: Cannot find type of die [in module /path/to/module]

This is with a patched gdb. Now, sometimes compiling with `-gc` allows this to work (as it does with this simple example), but in my larger programs, this error message is given instead:

        Dwarf Error: Cannot find DIE at 0xe36 referenced from DIE at
        0x165 [in module /path/to/module]


I'm not sure whose fault this is, so instead of posting a bug, I thought I would post it to the newsgroup (my first to a newsgroup, so if I've made a galling error in etiquette, please, be gentle. :]

Also, shouldn't the GDB command 'list' list out the D module, without having to specify _Dmain? If you don't, it just gives this report:

        (gdb) list
        1       ../sysdeps/i386/elf/start.S: No such file or directory.
        in ../sysdeps/i386/elf/start.S

I think having GDB and DMD working together nicely is important. If push comes to shove, I'm willing to learn about DWARF and ELF and GDB internals as a project, but to be completely honest, I'd rather not have to.

Thanks,

-Bernard.

Reply via email to