2017-10-12 5 views
0

Dans mon programme, p_meta->padding est un tableau char. Quand je l'imprime dans gdb, le résultat est:Quel est le format par défaut de la commande d'impression gdb

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

Il semble que utilisez le format octal. Mais je ne peux pas comprendre ce que \024e ou \am\333p signifient. Lorsque j'utilise un format explicite, je suis arrivé:

(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>} 

La version de gdb est:

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

Merci pour toute aide!

+0

Par défaut, GDB imprime une valeur en fonction de son type de données. – Gaurav

+0

Je suppose que le tableau contient une valeur garbage. – Gaurav

+0

@GauravPathak Oui, le tableau est rempli par des caractères aléatoires. – wangt0907

Répondre

0

Je semblais comprendre un peu maintenant. Gdb utilise le format char pour les caractères imprimables et utilise le format octal pour les caractères non imprimables. Le e de \024e dans le format par défaut équivaut à 0145 suivi de 024 au format octal.