Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 如何从elf中提取枚举信息?_Linux_Elf - Fatal编程技术网

Linux 如何从elf中提取枚举信息?

Linux 如何从elf中提取枚举信息?,linux,elf,Linux,Elf,要从elf文件获取枚举信息。无法从.rodata或.data或.bss节获取信息 1、 g++-o测试.cc 2、 objdump-s-j.rodata t或objdump-s-j.data t 不显示有关枚举成员数据的任何信息 gcc版本:4.7.2和linux centos6 namespace test { namespace error { enum { kUnkown = -1, kSuccess

要从elf文件获取枚举信息。无法从.rodata或.data或.bss节获取信息

1、
g++-o测试.cc

2、
objdump-s-j.rodata t
objdump-s-j.data t
不显示有关枚举成员数据的任何信息

gcc版本:4.7.2和linux centos6

namespace test {
    namespace error {
        enum {
            kUnkown         = -1,
            kSuccess        = 0,
            kInvalidParams  = 1,
            kDBInitFailed = 2,
            kTimeout        = 3,
            kAttributeInitFailed = 4,
            kPageCacheInitFailed = 5,
            kUpdate = 9001,
        };  
    } // namespace error
}   

int main()
{
    return 0;
}   
要从elf文件获取枚举信息。无法从.rodata或.data或.bss节获取信息

enum
是类型声明,而不是对象。它在内存中没有任何存在

(这同样适用于
结构
联合
,或大多数
es。)

如果在编译程序时启用了调试符号(
-g
),则可能有一些调试信息引用了
enum
。但是,在运行时不使用该数据。

正确。但它肯定存在于debuginfo中。请参见
eu readelf--debug dump=info my executable或lib | grep-A 3 my_ENUM_SYMBOL
。它出现在
.debug\u info
部分。请注意,这仅适用于true
enum
s;用于定义常量的宏不可用,除非使用
-g3
-ggdb3
编译,然后需要使用
.debug\u宏
部分。。。你必须处理扩展宏并自己评估它,这一点都不有趣。