假設我有一個緩衝buf
的C-字符串表示如何讓gdb打印十六進制字符串中的不可打印字符而不是八進制字符,同時保留ascii格式的ascii字符?
char* buf = "Hello World \x1c"
當我使用命令p buf
在gdb打印此BUF,我得到以下
$1 = "Hello World \034"
是否有一個打印命令或一個gdb設置將會打印下面的內容?
$1 = "Hello World \x1c"
我曾嘗試過各種格式參數,如/c
和/x
,但他們沒有得到,我尋找的效果。我也玩過printf,但無法達到預期的效果。
更新:我使用的是「GNU gdb(GDB)7.0.1-debian」。
更新: 我也玩過x。
如果我這樣做x/c
它打印不可打印字符的八進制和十進制,然後打印ascii和小數的可打印字符。
如果我做x/s
它輸出完全相同的p命令。
如果我這樣做x/x
它只是輸出十六進制,但然後我們失去了可打印部分的ascii字符。
更新:這個reference,除非不完整,表明我的願望是不可用的,但任何人都可以證實?
請參閱更新問題。 – merlin2011
我正在做一些asm調試,並試圖通過使它們在字符串中並排讀取時很容易地獨立讀取hex和ascii來最大化可讀性。 – merlin2011