Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过GDB调试DMD生成程序_Gdb_D_Stack Trace_Dmd_Demangler - Fatal编程技术网

通过GDB调试DMD生成程序

通过GDB调试DMD生成程序,gdb,d,stack-trace,dmd,demangler,Gdb,D,Stack Trace,Dmd,Demangler,我正试图调试我的第一个用D编译的程序 dmd -debug hello.d 但是当我通过GDB-7.6运行可执行文件时,它似乎不知道在哪里可以找到源代码并解码堆栈跟踪的格式(及其名称) GDB调试DMD生成的可执行文件是否还不受支持,或者我是否遗漏了什么?标记-debug表示已启用调试代码,这与使用调试符号不同。您要查找的标志是-g或-gc 有关编译器标志的更多信息,请参阅。Ok。因此,我添加了标志-gc,但它仍然不起作用。现在出现错误,警告:在0x7ffff7ffa000处添加的符号文件系统

我正试图调试我的第一个用D编译的程序

dmd -debug hello.d
但是当我通过GDB-7.6运行可执行文件时,它似乎不知道在哪里可以找到源代码并解码堆栈跟踪的格式(及其名称)


GDB调试DMD生成的可执行文件是否还不受支持,或者我是否遗漏了什么?

标记
-debug
表示已启用调试代码,这与使用调试符号不同。您要查找的标志是
-g
-gc


有关编译器标志的更多信息,请参阅。

Ok。因此,我添加了标志
-gc
,但它仍然不起作用。现在出现错误,警告:在0x7ffff7ffa000处添加的符号文件系统提供的DSO中找不到可加载的节。命令
breakmain
失败,但在执行过程中按Ctrl-C似乎会使gdb进入可用状态。我正在通过Emacs运行gdb,堆栈帧的格式似乎也会使Emacs感到困惑。我无法单击它们来更改堆栈帧。至少当我按下Ctrl-C键时,变量视图似乎可以工作。只是为了检查一些简单的事情:“dmd-gc hello.d”生成一个名为“hello”的可执行文件。“gdb./hello”(直接从终端开始,我们暂时不使用emacs)应该不会产生错误,除了可能要求安装更多的调试库。然后“run”应该像在gdb中一样运行程序。要使用DUB配置该程序,我们可以在DUB.json中添加:`“dflags”:[“-m64”、“-g”、“-gc”]`