2017-10-12 139 views
0

在我的程序中,p_meta->padding是一個char數組。當我在gdb中打印時,結果如下:什麼是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 

感謝您的幫助!

+0

默認情況下,GDB根據其數據類型打印一個值。 – Gaurav

+0

我猜數組包含垃圾值。 – Gaurav

+0

@GauravPathak是的,數組由隨機字符填充。 – wangt0907

回答

0

我現在好像有點理解了。 Gdb使用可打印字符的char格式,並將八進制格式用於不可打印的字符。默認格式中的e\024e等同於0145後跟024的八進制格式。