2011-05-17 27 views

回答

3

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

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

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

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

+0

所以你告诉我,有没有办法从调试信息挖掘这个? – 2011-05-17 12:29:47

+0

嗯,其实我错误地认为库编译没有调试信息。事实上,矮人可以提供帮助,让我稍后更新答案。 – 2011-05-17 12:40:20

相关问题