从编译的二进制文件获得macros值(带debugging)

我需要确定二进制编译的特定macros的值。

该文件是一个Linux共享库文件。

可能吗?

鉴于宏由预处理器处理,即使实际的编译器也不知道它们。 唯一的选择是逆向工程鳕鱼,找到你知道宏的地方,并从那里提取的价值。

编辑:我刚刚检查了DWARF规范,标准定义了.debug_macinfo部分,尤其是存储有关宏的调试信息,本节包含每个定义的宏的DW_MACINFO_define记录。

因此,如果您有库的调试版本,则可以尝试使用dwarfdump -mreadelf --debug-dump=macro来提取此信息。

但是:我已经在我的系统中的几个库上试过了,它们都没有包含任何宏记录。 默认情况下gcc不会发射它们,库必须用gcc -g3编译(交换机增加了调试信息级别)。 我想这对你来说是个坏消息。