想从 elf 文件中获取枚举信息。无法从 .rodata 或 .data 或 .bss 部分获取信息。
1、 g++ -o t test.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;
}
want to get enum info from elf file. cannot get info from .rodata or .data or .bss section.
enum
是类型声明,而不是对象。它在内存中不存在。
(这同样适用于 struct
或 union
,或大多数 class
es。)
如果您在启用调试符号 (-g
) 的情况下编译程序,可能会有一些调试信息引用了 enum
。但是,该数据不会在运行时使用。
我是一名优秀的程序员,十分优秀!