之前有人问过问题,我看到关于 ddd 新闻组的错误报告,但没有一个建议的解决方案对我有用。
它出现了,但是当您尝试执行诸如打开文件之类的操作时,它会挂起消息“等待 GDB 准备好”。
其他人也报告了一个关键事实,即它对某些用户有效,而对其他用户无效。我已经比较了环境,找不到任何显着差异。任何建议将不胜感激。
之前有人问过问题,我看到关于 ddd 新闻组的错误报告,但没有一个建议的解决方案对我有用。
它出现了,但是当您尝试执行诸如打开文件之类的操作时,它会挂起消息“等待 GDB 准备好”。
其他人也报告了一个关键事实,即它对某些用户有效,而对其他用户无效。我已经比较了环境,找不到任何显着差异。任何建议将不胜感激。
也遇到了这个问题。上面发布的简单解决方案是删除 ~/.ddd/ 目录中的 init 文件。
但这意味着您的所有自定义设置都将消失。所以我开始寻找真正的原因。我观察到只有在使用“GDB 设置”对话框后才会出现问题。一旦你打开这个对话框,上面提到的 init 文件将会增长,因为很多 gdb 设置将被存储在那里。
在逐步缩小这些额外的行之后,我发现了“违规行”。问题是由扩展提示的设置引起的。打开 GDB 设置对话框后,该行将显示为
set extended-prompt not set\n\
这个“未设置”是 gdb 将在“显示扩展提示”上报告的内容。不幸的是,“设置扩展提示符在 gdb 中有点问题,所以如果我在从没有涉及 ddd 的 shell 运行的 gdb 中输入“设置扩展提示符未设置”,gdb 也会锁定。
看起来设置扩展提示的唯一安全方法是当它包含字符串“(gdb)”时。所以我修改了 init 文件中的违规行,现在它看起来像这样:
set extended-prompt (gdb) \n\
使用此设置,我不再遇到问题。希望对您的情况也有帮助。
删除 ~/.ddd 接缝以解决问题。
执行 Ctrl+D,然后选择“重新启动 DDD”似乎对我有用。
打开窗口时会出现问题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测试过。
我认为删除 .ddd 中的初始化文件也可以解决这个问题。无需删除整个 .ddd 文件夹。我试过了,它奏效了!
此外,如果您大量修改 ddd 默认选项(例如 Buttons 和 Graph Displays),您可以将 init 文件移动到此文件夹之外,然后将一些选项复制回 ddd 默认创建的 init 文件。
注意:删除init文件后重新启动ddd时,它将创建默认的init文件。
如果问题仍然存在,以下解决方法可能会有所帮助:
ddd --debugger bashdb script.sh
)exit
在 ddd 的下窗格中输入这似乎杀死了一个 bashdb 实例,然后另一个 bashdb 实例似乎在运行。bashdb 的第二个实例似乎工作正常,bash-script 源代码最终出现在顶部窗格中,并允许您单步执行和调试。
使用 Ctrl+D 会弹出一个对话框,要求重新启动 GDB 以解决此问题。在我的情况下,删除此特定文件夹中的 ~/.ddd 或 init 文件没有帮助。
解密的简单删除初始化文件的建议也对我有用。
对于那些不知道的人,~/.ddd
是.ddd
您主目录中的文件夹。