通过 GDB 调试 DMD 生成程序
Posted
技术标签:
【中文标题】通过 GDB 调试 DMD 生成程序【英文标题】:Debugging DMD Generate Program through GDB 【发布时间】:2013-06-30 15:59:06 【问题描述】:我正在尝试调试我的第一个使用 D 编译的程序
dmd -debug hello.d
但是当我通过 GDB-7.6 运行可执行文件时,它似乎不知道在哪里可以找到源代码并解码堆栈跟踪的格式(及其名称解构)。
是否尚不支持 GDB 调试 DMD 生成的可执行文件,或者我遗漏了什么?
【问题讨论】:
【参考方案1】:-debug
标志表示启用了调试代码,这与具有调试符号不同。您要查找的标志是-g
或-gc
。
有关编译器标志的更多信息,请参阅http://dlang.org/dmd-linux.html#switches。
【讨论】:
好的。所以我添加了标志-gc
,但它仍然不起作用。它现在与warning: no loadable sections found in added symbol-file system-supplied DSO at 0x7ffff7ffa000
出错。命令 break main
失败,但在执行期间按 Ctrl-C 似乎使 gdb 进入可用状态。
我正在通过 Emacs 运行 GDB,堆栈帧的格式似乎也让 Emacs 感到困惑。我无法单击它们来更改堆栈框架。至少当我按下 Ctrl-C 时,变量视图似乎可以工作。
只是为了检查简单的事情:“dmd -gc hello.d”会生成一个名为“hello”的可执行文件。 “gdb ./hello”(直接来自终端,让我们暂时不考虑 emacs)应该不会产生错误,除了可能要求安装更多调试库。 "run" 应该像往常一样在 gdb 中运行程序。
要使用 DUB 进行配置,我们可以添加:` "dflags": [ "-m64", "-g", "-gc" ] ` to dub.json以上是关于通过 GDB 调试 DMD 生成程序的主要内容,如果未能解决你的问题,请参考以下文章