ddd在开始时挂起

时间:2010-05-26 14:45:50

标签: gdb ddd-debugger

之前已经问过问题,我看到了有关ddd新闻组的错误报告,但没有一个建议的解决方案适合我。

它出现了,但是当你尝试做一些事情,比如打开一个文件时,它会挂起“等待GDB准备就绪”的消息。

其他人报告的一个关键事实是,它对某些用户而不是其他用户都有效。我对环境进行了比较,但未发现任何显着差异。任何建议都将受到最高的赞赏。

8 个答案:

答案 0 :(得分:26)

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

答案 1 :(得分:25)

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

但这意味着您的所有自定义都将消失。所以我开始寻找真正的原因。我观察到问题只发生在我使用" GDB设置"对话。打开此对话框后,上面提到的init文件将会增长,因为很多gdb设置将存储在那里。

在逐步收缩这些额外的行后,我找到了#34;违规行"。 问题是由扩展提示设置引起的。打开GDB设置对话框后,该行将显示为

set extended-prompt not set\n\

这"未设置"是gdb将报告的内容" show extended-prompt"。 Unfortunatley"设置扩展提示 在gdb中有点像bug,所以如果我输入"设置extended-prompt not set"在没有ddd的shell中运行的gdb中,gdb也会锁定。

看起来设置扩展提示符的唯一安全方法是它包含字符串"(gdb)"。 所以我修改了init文件中的违规行,现在它的内容如下:

set extended-prompt (gdb) \n\

使用此设置我不再遇到问题。希望对你的情况也有帮助。

答案 2 :(得分:7)

执行Ctrl + D,然后选择"重新启动DDD"似乎对我有用。

答案 3 :(得分:3)

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

因为如果您已经自定义DDD环境,每次都不能删除整个~/.ddd/配置目录,我找到了一个解决方案来修复~/.ddd/init文件,它可以帮助您删除整个配置。

关闭DDD并使用文本编辑器打开文件

~/.ddd/init

搜索

set extended-prompt not set\n\

将其删除将其替换为

set extended-prompt \n\

保存并运行DDD。它会以应有的方式开始。

因为这个任务每次重复都很繁琐,特别是如果你像我一样频繁更改gdb设置,我建议你在shell环境中创建一个别名。

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

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

如果您不想使用cli来修复init文件,另一种方法是按照之前的建议编辑init文件,如果您因任何原因打开GDB Settings...面板那么请记得在Edit菜单中禁用选项Save Options并将其禁用,直到下一次DDD重新启动。

为了完整性(如@hmogal所述)点击

CTRL+d

在GDB挂起期间杀死GDB并重新启动它允许使用DDD。不幸的是,这种方法不是一个好的解决方案,因为它会删除init文件中的整个GDB配置,甚至是您专门调整的设置。所以要注意。

使用DDD 3.2.12 测试的所有内容。

答案 4 :(得分:2)

我认为删除.ddd中的init文件也可以解决这个问题。无需删除整个.ddd文件夹。我试过了,它有效!

此外,如果您广泛修改ddd默认选项(如按钮和图表显示),则可以将init文件移动到此文件夹之外,然后将某些选项复制回ddd默认创建的init文件。

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

答案 5 :(得分:1)

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

  • 像往常一样打开ddd(例如ddd --debugger bashdb script.sh
  • 在ddd
  • 的下方窗格中输入exit

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

答案 6 :(得分:1)

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

答案 7 :(得分:0)

Decipher建议简单地删除init文件也适合我。

对于那些不知道的人, ~/.ddd 是您主目录中的 .ddd 文件夹。