什么是gdb print命令的默认格式

时间:2017-10-12 06:11:28

标签: c gdb

在我的程序中,p_meta->padding是一个char数组。当我在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

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

似乎Gdb使用char格式表示可打印字符,并使用八进制格式表示不可打印字符。默认格式的e \024e等同于0145后跟024的八进制格式。