linux - 为什么我的 gdb 提示在我更改颜色后显示错误

标签 linux gdb prompt

我通过将 set prompt\033[1;33m(gdb)\033[0m 写入 .gdbinit 文件来更改我的 gdb 提示颜色。我成功地更改了 gdb 提示符的颜色。

但我发现在我输入长命令而不换行后,带有参数的长命令会覆盖我的提示。为什么?

最佳答案

编辑:如果你的 gdb 启用了 python 脚本,请查看 @matt's answer查看如何使用 set extended-prompt 命令执行此操作 - 这是一个更好的解决方案。

Gdb 使用 readline 管理命令输入包裹。告诉 readline 提示字符串中的字符序列在输出到屏幕时实际上不会移动光标的方法是用标记将其包围 RL_PROMPT_START_IGNORE(当前 '\001' 在 readline 的 C 头文件中)和 RL_PROMPT_END_IGNORE(当前为 '\002')。

Bash 有一种可移植的表达方式:当它在提示变量中看到 "\[""\]" 时,它会将它们转换为 RL_PROMPT_START_IGNORERL_PROMPT_END_IGNORE。 Bash 在处理各种其他转义序列(例如 \w 以包含当前工作目录)时执行此操作。

Gdb 的set prompt 命令不支持"\[""\]",但是你可以把八进制转义\001\002 在你的 set prompt 字符串中(如果 readline 的作者选择使用不同的标记集,可能会发生变化)。

set prompt \001\033[1;33m\002(gdb) \001\033[0m\002

关于linux - 为什么我的 gdb 提示在我更改颜色后显示错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30998499/

相关文章:

Python input() 函数无法正常运行 : doesn't seem to record any input. 也许是 Linux 问题?

c++ - 为什么我只能在 Ubuntu 的 G++ 中获得垃圾值?

ubuntu - 使用 Eclipse CDT gui wrapper for gdb 分析转储

linux - 如何将 gdb 调试器置于 nohup 下?

linux - bash 脚本需要读取用户输入并将其用作另一个命令的参数

linux - 如何开始使用 fbx-conv? "Command not found"问题

linux - 如何从脚本编辑/etc/sudoers?

c++ - 如何使用 gdb 调试使用 yasm 组装的代码?

linux - 带有最后一个退出代码的 Bash 提示

powershell - PowerShell 中是否有用于交互式提示的模块或类似的东西?