2010-08-23 6 views
2

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, adresse et taille de la variable globale. je récupère le type des variables et de ses enfants en utilisant gdb et gdb \ MI (ptype, whatis, -var-créer & -var-liste-enfants).gdb BFD: obtenir l'adresse variable enfant ou la taille ou le décalage

Comment puis-je obtenir la taille adresse \ \ 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. J'ai lu que gdb peut lire les informations DWARF, mais je n'arrive pas à comprendre comment obtenir ces informations à partir de gdb.

Répondre

3

Voici ce que j'ai fait par la suite. Pour obtenir la taille , je:

p sizeof(A.time) 

et pour obtenir l'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 bitfields taille et le décalage en bits, je devais recompiler GDB selon la suggestion proposée dans Nabble: Address of bitfield element bug?

Questions connexes