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

时间:2015-06-23 09:08:44

标签: linux gdb prompt

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

但是我发现使用我的参数的长命令将在我输入一个长命令而不转到换行符后覆盖我的提示。为什么呢?

2 个答案:

答案 0 :(得分:3)

编辑:如果您的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中} string(如果readline的作者选择使用不同的标记集,则可能会有所变化。)

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

答案 1 :(得分:1)

gdb有一个命令:set extended-prompt,它接受​​gdb.prompt python module中描述的转义序列。其中包括\ [和\] bashism用于包装对提示长度没有贡献的字符。这当然需要启用python的gdb才能工作。