2013-06-30 39 views
2

我试图调试我在d第一个程序使用调试DMD生成计划通过GDB

dmd -debug hello.d 

编译,但是当我通过GDB-7.6运行可执行程序,它似乎并不知道在哪里可以找到源代码并解码堆栈跟踪的格式(及其名称 - demangling)。

是GDB调试DMD生成的可执行文件还不支持或我错过了什么吗?

回答

8

-debug标志表示启用了调试代码,这与调试符号不同。您正在寻找的国旗是-g-gc

有关编译器标志的更多信息,请参阅http://dlang.org/dmd-linux.html#switches

+0

好的。所以我添加了标志'-gc',但它仍然不起作用。现在,它出现错误,警告:在0x7ffff7ffa000处添加的符号文件系统提供的DSO中找不到可加载部分。命令'break main'失败,但在执行过程中按下Ctrl-C似乎会使gdb进入可用状态。 –

+0

我通过Emacs运行GDB,并且栈帧的格式似乎也混淆了Emacs。我不能点击它们来改变堆栈框架。至少当我按下Ctrl-C时,变量视图似乎工作。 –

+0

只需检查简单的事情:“dmd -gc hello.d”会生成一个名为“hello”的可执行文件。 “gdb ./hello”(直接从终端,让我们暂时离开emacs)应该不会产生错误,除非可能要求安装更多的调试库。然后运行程序,就像在gdb中一样。 –