2017-10-12 6 views
0

私のプログラムではp_meta->paddingは文字配列です。 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> 

これは8進形式を使用しているようです。しかし、私は\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形式を使用し、印刷不可能な文字には8進形式を使用します。 e\024eの場合、デフォルト形式は0145で、その後には024が8進形式です。

関連する問題