加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 05:39:12 所属栏目:百科 来源:网络整理
导读:假设我有一个缓冲区buf,其c字符串表示是 char* buf = "Hello World x1c" 当我使用p buf命令在gdb中打印此buf时,我得到以下内容 $1 = "Hello World 34" 是否有打印命令或gdb设置将打印以下? $1 = "Hello World x1c" 我已经尝试过各种格式参数,如/ c和/ x
假设我有一个缓冲区buf,其c字符串表示是
char* buf = "Hello World x1c"

当我使用p buf命令在gdb中打印此buf时,我得到以下内容

$1 = "Hello World 34"

是否有打印命令或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

详细信息

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读