我通過將set prompt \033[1;33m(gdb) \033[0m
寫入.gdbinit
文件來更改我的gdb提示符的顏色。我成功改變了我的gdb提示符的顏色。爲什麼我的gdb提示在改變顏色後顯示錯誤
但我發現我的長命令與我的參數將覆蓋我的提示後,我不輸入換行輸入一個長命令。爲什麼?
我通過將set prompt \033[1;33m(gdb) \033[0m
寫入.gdbinit
文件來更改我的gdb提示符的顏色。我成功改變了我的gdb提示符的顏色。爲什麼我的gdb提示在改變顏色後顯示錯誤
但我發現我的長命令與我的參數將覆蓋我的提示後,我不輸入換行輸入一個長命令。爲什麼?
編輯:如果您的gdb啓用了python腳本,請查看@matt's answer以瞭解如何使用set extended-prompt
命令執行此操作 - 這是一個更好的解決方案。
Gdb使用readline包管理命令輸入。告訴readline,當輸出到屏幕時,提示字符串中的字符序列實際上並未移動光標的方式是用標記RL_PROMPT_START_IGNORE
(當前在readline的C頭文件中爲'\001'
)和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
GDB有一個命令:set extended-prompt接受逃脫在gdb.prompt python module描述的序列。其中包括\ [和\] bashism的包裝角色,不影響提示長度。這當然需要啓用python的gdb才能工作。
謝謝,它確實有效 – Asuka