I have a patched gdb
6.8, but I can't get any debugging to work. Given this test file:
import std.stdio;
void main()
{
float f = 3.0;
int i = 1;
writeln(f, " ", i);
f += cast(float)(i / 10.0);
writeln(f, " ", i);
i++;
f += cast(float)(i / 10.0);
writeln(f, " ", i);
i += 2;
f += cast(float)(i / 5.0);
writeln(f, " ", i);
}
And attempting to debug on the command line:
bash-4.0 [d]$ dmd -g test.d # '-gc' shows the same behaviour.
bash-4.0 [d]$ ~/src/gdb-6.8/gdb/gdb test
GNU gdb 6.8
Copyright (C) 2008 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "i686-pc-linux-gnu"...
(gdb) list
1 ../sysdeps/i386/elf/start.S: No such file or directory.
in ../sysdeps/i386/elf/start.S
And debugging a project with Eclipse
Using -gc
:
Dwarf Error: Cannot find DIE at 0x134e4 referenced from DIE at 0x12bd4 [in module /home/bernard/projects/drl/drl.i386]
(gdb) Dwarf Error: Cannot find DIE at 0x1810 referenced from DIE at 0x1b8 [in module /home/bernard/projects/drl/drl.i386]
Using -g
:
(gdb) Die: DW_TAG_<unknown> (abbrev = 7, offset = 567)
has children: FALSE
attributes:
DW_AT_byte_size (DW_FORM_data1) constant: 4
DW_AT_type (DW_FORM_ref4) constant ref: 561 (adjusted)
DW_AT_containing_type (DW_FORM_ref4) constant ref: 539 (adjusted)
Dwarf Error: Cannot find type of die [in module /home/bernard/projects/drl/drl.i386]
I've seen quite a few posts like this on the Digital Mars newsgroup, but all are seemingly ignored. Can anyone shed some light on the situation?
I know of ZeroBUGS, but I really want to get gdb
working.
Update:
Thanks to luca_, on IRC (freenode, #D), I got the simple case (one file) working:
(gdb) list Dmain
1 void main()
2 {
3 float f = 3.0;
4 int i = 1;
5 f += cast(float)(i / 10.0);
6 i++;
7 f += cast(float)(i / 10.0);
8 i += 2;
9 f += cast(float)(i / 5.0);
10 }
(gdb) break 3
Unfortunately, my project made up of multiple files dies with a DWARF error.
EDIT:
As of 2.036 (I think), the GDB debugging information produced by DMD is correct, and should work as expected.