如何使gdb以十六进制打印字符串的不可打印字符,而不是以ASCII形式保留ascii字符?

前端之家收集整理的这篇文章主要介绍了如何使gdb以十六进制打印字符串的不可打印字符,而不是以ASCII形式保留ascii字符?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
假设我有一个缓冲区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,除非不完整,表明我所期望的是不可用,但任何人都可以确认?

解决方法

您可以使用x命令转储字符串引用的内存:
(gdb) x/32xb buf

显示前32个字节.

看到

(gdb) help x

详细信息

猜你在找的C&C++相关文章