我通过将 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_IGNORE
和 RL_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/