假设我有一个缓冲区buf,其c字符串表示是
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,除非不完整,表明我所期望的是不可用,但任何人都可以确认?
解决方法
@H_403_30@ 您可以使用x命令转储字符串引用的内存:(gdb) x/32xb buf
显示前32个字节.
看到
(gdb) help x
详细信息