如何使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 / c它打印八进制和十进制非打印字符,然后打印可打印的字符与ascii和十进制. 如果我做x / s,输出与p命令完全相同. 如果我做x / x,它只输出十六进制,然后我们丢失可打印部分的ascii字符. 更新:这reference,除非不完整,表明我所期望的是不可用,但任何人都可以确认? 解决方法
您可以使用x命令转储字符串引用的内存:
(gdb) x/32xb buf 显示前32个字节. 看到 (gdb) help x 详细信息 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |