我需要确定编译二进制文件的特定宏的值。
该文件是Linux共享库文件。
有可能吗?
答案 0 :(得分:5)
鉴于宏是由预处理器处理的,即使实际的编译器也不知道它们。唯一的选择是对鳕鱼进行逆向工程,找到你知道使用宏的地方并从中提取值。
编辑:我刚检查了DWARF规范,标准定义了.debug_macinfo
部分,尤其是存储有关宏的调试信息,此部分包含每个已定义的DW_MACINFO_define
记录宏。
因此,如果您拥有该库的调试版本,则可以尝试使用dwarfdump -m
或readelf --debug-dump=macro
来提取此信息。
但是:我已经在我的系统中的几个库上尝试过了,并且它们都没有包含任何宏记录。默认情况下gcc
不会发出它们,必须使用gcc -g3
编译库(交换机会增加调试信息级别)。我想,这对你来说是个坏消息。