Linux 从已编译的二进制文件中获取宏值(带调试)

Linux 从已编译的二进制文件中获取宏值(带调试),linux,debugging,macros,binary,decompiling,Linux,Debugging,Macros,Binary,Decompiling,我需要确定编译二进制文件时使用的特定宏的值 该文件是Linux共享库文件 有可能吗?由于宏是由预处理器处理的,即使是实际的编译器也不知道它们。唯一的选择是对cod进行反向工程,找到使用宏的位置并从中提取值 编辑:我刚刚检查了DWARF规范,该标准定义了。debug\u macinfo部分特别是为了存储有关宏的调试信息,该部分包含每个已定义宏的DW\u macinfo\u define记录 因此,如果您有库的调试版本,可以尝试使用dwarfdump-m或readelf--debug dump=ma

我需要确定编译二进制文件时使用的特定宏的值

该文件是Linux共享库文件


有可能吗?

由于宏是由预处理器处理的,即使是实际的编译器也不知道它们。唯一的选择是对cod进行反向工程,找到使用宏的位置并从中提取值

编辑:我刚刚检查了DWARF规范,该标准定义了
。debug\u macinfo
部分特别是为了存储有关宏的调试信息,该部分包含每个已定义宏的
DW\u macinfo\u define
记录

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


但是:我在我的系统中的几个库上尝试过,它们都不包含任何宏记录。默认情况下,
gcc
不发出它们,必须使用
gcc-g3
编译库(该开关增加调试信息级别)。我想这对你来说是个坏消息。

那么你是在告诉我,没有办法从调试信息中挖掘这些信息吗?嗯,实际上我错误地认为库是在没有调试信息的情况下编译的。的确,侏儒可以帮上忙,让我马上更新答案。