c - gdb打印命令的默认格式是什么

标签 c gdb

在我的程序中,p_meta->padding 是一个字符数组。当我在gdb中打印它时,结果是:

(gdb) p p_meta->padding
$18 = "\037\000\000\000\332\375\024e\203\000\000\000\am\333p", '\000' <repeats 215 times>

它似乎使用八进制格式。但我不明白 \024e\am\333p 是什么意思。当我使用显式格式时,我得到:

(gdb) p /o p_meta->padding
$19 = {037, 0, 0, 0, 0332, 0375, 024, 0145, 0203, 0, 0, 0, 07, 0155, 0333, 0160, 0 <repeats 216 times>}
(gdb) p /x p_meta->padding
$20 = {0x1f, 0x0, 0x0, 0x0, 0xda, 0xfd, 0x14, 0x65, 0x83, 0x0, 0x0, 0x0, 0x7, 0x6d, 0xdb, 0x70,
  0x0 <repeats 216 times>}

gdb的版本是:

# gdb -v
GNU gdb (GDB) Fedora 7.12-24.fc25

感谢您的帮助!

最佳答案

看来Gdb对可打印字符使用char格式,对不可打印字符使用八进制格式。默认格式下 \024ee 等于八进制格式中 0145 后跟 024

关于c - gdb打印命令的默认格式是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46702584/

相关文章:

c - 在创建 makefile 时,如何创建调试目标以及正常构建程序的默认目标?

c - 如何在 C 中初始化结构的动态数组?

c - GCC 无法编译,甚至在基本代码上也会从它自己的库中给出大量错误

c++ - 过多的线程数会在文件读取时产生更好的结果

gdb/mi gdb服务器调试

gdb - 如何在 TUI 模式下在 GDB 的命令窗口中向后滚动?

debugging - 如何在不停止运行程序的情况下关闭gdb连接

c++ - 为什么这种声明函数的方式在 C++ 中已过时?

密码加密解密逻辑

debugging - 如何在GDB中重新运行程序多次?