gpt4 book ai didi

c - 如何让 gdb 以十六进制而不是八进制打印字符串的不可打印字符,同时以 ascii 形式保留 ascii 字符?

转载 作者:太空狗 更新时间:2023-10-29 16:27:11 24 4
gpt4 key购买 nike

假设我有一个缓冲区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 命令转储您的 char 指针指向的内存:

(gdb) x/32xb buf

显示前 32 个字节。

(gdb) help x

了解详情。

关于c - 如何让 gdb 以十六进制而不是八进制打印字符串的不可打印字符,同时以 ascii 形式保留 ascii 字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16031100/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com