gdb \ BFD: Obtenir une adresse variable enfant ou taille ou décalage
Question
J'utilise gdb et libbfd pour récupérer des informations variables globales à partir d'un fichier elfe et le montrer. Je peux obtenir les données suivantes de libbfd: Nom de la variable globale, l'adresse et la taille. Je récupère le type des variables et de ses enfants en utilisant gdb et gdb \ MI (ptype, whatis, -var-créer et -var-list-enfants).
Comment puis-je obtenir l'adresse \ taille \ décalage par rapport parent de tous les enfants?
par exemple
type = struct {\n"
unsigned char count;\n"
unsigned char time;\n
}\n
Si une variable A de ce type est en adresse 0x000100, je veux montrer que A.count est 0x000100 avec la taille 0x1 et A.time est en 0x000101 avec la taille 0x1.
EDIT: J'ai lu que gdb peut lire l'info NAIN, mais je ne peux pas comprendre comment puis-je obtenir ces informations de gdb.
La solution
Voici ce que je l'ai finalement. Pour obtenir le Taille , je:
p sizeof(A.time)
et pour obtenir le adresse je:
p /a &A.time
NOTE: Ceci ne concerne que la variable d'une taille supérieure puis 1 octet. Pour être en mesure d'obtenir la taille de bitfields et offset en bits, je devais recompiler GDB selon la suggestion proposée dans Nabble: Adresse du bogue de l'élément bitfield