6.8 にパッチを適用gdb
しましたが、デバッグが機能しません。このテスト ファイルを指定すると、次のようになります。
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);
}
そして、コマンドラインでデバッグしようとしています:
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
そしてEclipseでプロジェクトをデバッグする
使用-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]
使用-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]
Digital Mars ニュースグループでこのような投稿をかなり見てきましたが、すべて無視されているようです。誰でも状況に光を当てることができますか?
私は ZeroBUGS のことは知っていますが、本当に働きたいと思ってgdb
います。
アップデート:
IRC (freenode、#D) の luca_ のおかげで、単純なケース (1 つのファイル) が機能するようになりました。
(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
残念ながら、複数のファイルで構成された私のプロジェクトは DWARF エラーで終了します。
編集:
2.036 の時点で (私が思うに)、DMD によって生成される GDB デバッグ情報は正しく、期待どおりに動作するはずです。