2010-05-26 132 views
17

问题之前已经被问到,我看到ddd新闻组的bug报告,但没有一个建议的解决方案适用于我。ddd在启动时挂起

它出现了,但是当你试图做任何像打开文件一样的东西时,它会挂起消息“等到GDB准备好了。”

其他人报告的一个关键事实是,它对一些用户而不是其他人可以正常工作。我比较了环境并找不到任何显着差异。任何建议将不胜感激。

+0

即使它不起作用,发布您尝试过的内容也不失为一个好主意,或者甚至可能链接到相关的错误报告 – 2010-05-26 14:49:34

+0

。 我试过:删除.gdbinit。通过.gdbinit更改提示为“(gdb)”(后面的空格应该是重要的)。我删除了我的initrc。没有工作。这里是错误报告和建议修复的链接(对于我来说,这些修复无效): http://bugs.gentoo.org/show_bug.cgi?id=93543#c10 http://osdir.com/ml/debugging .ddd.bugs/2003-02/msg00005.html – 2010-05-27 14:09:05

回答

23

删除〜/ .ddd接缝来解决问题。

+0

清洁和简单。这必须传播到世界上,我看到这个之前几乎放弃** ddd ** – albfan 2012-10-19 02:06:53

+0

也为我解决了这个问题。一旦。然后问题又出现了。然后再解决它。等等。简而言之,我每次拨打ddd都必须删除〜/ .ddd。 – 2017-07-19 16:38:26

2

我认为删除.ddd里的init文件也会解决这个问题。无需删除整个.ddd文件夹。我试了一下,它的工作!另外,如果您广泛修改ddd默认选项(如按钮和图形显示),则可以将init文件移到此文件夹的外部,然后将一些选项复制回默认由ddd创建的init文件。

注意:在删除初始化文件后重新启动ddd时,它将创建默认的init文件。

0

解密的简单删除init文件的建议也适用于我。

而对于那些不知道,~/.ddd是在你的home目录.ddd文件夹。

1

如果问题仍然存在,以下解决方法可能会有所帮助:

  • 开放国内长途,你通常会(如ddd --debugger bashdb script.sh
  • 在DDD下方的面板类型exit

这似乎杀死了一个bashdb实例,然后另一个bashdb实例似乎运行。这个bashdb的第二个实例似乎工作正常,bash脚本源终于出现在顶部窗格中,并允许您逐步调试。

16

也遇到了这个问题。上面简单的解决方案是删除〜/ .ddd /目录中的init文件。

但是这意味着您的所有定制将会消失。所以我开始寻找真正的原因。我发现问题只发生在我使用“GDB设置”对话框后。一旦你打开这个对话框,上面提到的init文件将会增长,因为很多gdb设置将被存储在那里。

一步一步缩小这些额外的行后,我发现了“违规行”。 该问题是由扩展提示设置引起的。打开后,GDB设置对话框此线将改为像

集扩展,提示没有设置\ n \

这种“未设置”是什么GDB将在“秀扩展提示符”的报告。 Unfortunatley“设置扩展提示 是gdb中的一种bug,所以如果我在没有ddd的情况下从shell运行的gdb中输入”set extended-prompt not set“,gdb也会锁定。

它看起来像设置扩展提示的唯一安全方式是当它包含字符串“(gdb)”时。所以,我修改了init文件出错行,现在,它读起来就像这样:

集扩展提示符(GDB)\ n \

通过此设置我没有遇到这个问题的任何更长的时间。希望对你有帮助。

+2

这也解决了我的问题,而不必摔打我的设置。 – Anthony 2014-09-16 00:17:05

+1

我也发现这个解决方案,但留下空值字段。设置值在启动时仍然挂起。 – 2016-05-11 17:49:26

5

做一个Ctrl + D,然后选择“重新启动DDD”似乎为我工作。

+3

它也适用于我。大! – 2016-05-11 22:04:51

1

即使没有触摸任何设置,打开GDB Settings...窗口也会出现问题。

由于拆卸整个~/.ddd/配置目录每次时间不长的路要走,如果你自定义了DDD的环境,我已经找到了解决方案,以解决~/.ddd/init文件,可以帮助你也无需拆卸整个配置。

关闭DDD和你的文本编辑器文件

~/.ddd/init 

搜索线开

set extended-prompt not set\n\ 

删除

set extended-prompt \n\ 

节省更换和r un DDD。它会开始,因为它应该。

因为这个任务可能每次重复都很乏味,特别是如果像我一样经常更改gdb设置,我建议你在你的shell环境中创建一个别名。

alias fix-ddd="sed '/not set/d' -i $HOME/.ddd/init" 

这最后一种方法的优点是它可以用于init文件中的任何错误设置,无需您的特定干预。


如果你不想使用CLI来修复init文件的另一种方法是编辑init文件如先前建议,如果它发生在你身上开任何理由则GDB Settings...面板记得在Edit菜单中禁用选项Save Options,并将其保持禁用状态,直到下一个DDD重新启动。


出于完整性的GDB悬挂期间击打

CTRL+d 

起见(如由@hmogal说明)杀死GDB并重新启动它允许使用DDD。不幸的是,这种方法不是一个好的解决方案,因为它会擦除init文件中的整个GDB配置,甚至是您特别调整的设置。所以要注意。


一切与DDD 3.2.12测试。

1

使用Ctrl + D弹出一个对话框,要求重新启动GDB来解决问题。在我的情况下删除〜/ .ddd或init文件在这个特定的文件夹没有帮助。