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.

Était-ce utile?

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top