2010-08-23 30 views
2

我正在使用gdb和libbfd從elf文件中檢索全局變量信息並顯示它。 我可以從libbfd獲得以下數據:全局變量名稱,地址和大小。 我使用gdb和gdb \ MI(ptype,whatis,-var-create & -var-list-children)檢索變量及其子類型。gdb bfd:獲取子變量地址或大小或偏移量

如何從所有孩子的家長處獲取地址\尺寸\偏移量?

e.g

type = struct {\n" 
    unsigned char count;\n" 
    unsigned char time;\n 
    }\n 

如果這種類型的變量A是在地址0x000100,我要證明A.count在0x000100與尺寸爲0x1和A.time是0x000101與尺寸爲0x1。

編輯: 我讀過gdb可以讀取DWARF信息,但我無法弄清楚如何從gdb獲取這些信息。

回答

3

這是我最終做的。 爲了得到大小,我用:

p sizeof(A.time) 

,並得到地址我用:

p /a &A.time 

注意:這僅適用於尺寸更大然後1個字節的變量。 爲了能夠獲得位字節的大小和偏移量,我必須根據nabble提供的建議重新編譯GDB:Address of bitfield element bug?