ddd在开始时挂起

c-u*_*hin 21 gdb ddd-debugger

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

它出现了,但当你尝试做一些事情,比如打开一个文件时,它会挂起"等待GDB准备好"的消息.

其他人报告的一个关键事实是,它对某些用户而不是其他用户都有效.我对环境进行了比较,但未发现任何显着差异.任何建议将非常感谢.

小智 28

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

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

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

set extended-prompt not set\n\
Run Code Online (Sandbox Code Playgroud)

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

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

set extended-prompt (gdb) \n\
Run Code Online (Sandbox Code Playgroud)

有了这个设置,我不再遇到问题了.希望对你的情况也有帮助.

  • 这也解决了我的问题,而不必破坏我的设置. (3认同)

小智 26

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


小智 7

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


Dan*_*ndo 5

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

因为如果您自定义了 DDD 环境,则每次都删除整个~/.ddd/配置目录并不是一种可行的方法,因此我找到了一个修复该~/.ddd/init文件的解决方案,该解决方案也可以帮助您,而无需删除整个配置。

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

~/.ddd/init
Run Code Online (Sandbox Code Playgroud)

搜索该行

set extended-prompt not set\n\
Run Code Online (Sandbox Code Playgroud)

并将其删除替换

set extended-prompt \n\
Run Code Online (Sandbox Code Playgroud)

保存并运行 DDD。它将按其应有的方式开始。

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

~/.ddd/init
Run Code Online (Sandbox Code Playgroud)

最后一种方法的优点是,它适用于 init 文件中的任何有缺陷的设置,而无需您的特定干预。


如果您不想使用 cli 来修复 init 文件,另一种方法是按照前面的建议编辑 init 文件,如果您碰巧出于任何原因打开了面板,GDB Settings...请记住在菜单中禁用Edit该选项Save Options并保留它会被禁用,直到下一次 DDD 重新启动为止。


为了完整起见(如@hmogal所述),点击

CTRL+d
Run Code Online (Sandbox Code Playgroud)

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


一切都使用 DDD 3.2.12进行了测试。