2
A
回答
3
鉴于宏由预处理器处理,即使实际的编译器也不知道它们。唯一的选择是对鳕鱼进行反向工程,找到你知道使用宏的地方并从那里提取数值。
编辑:我刚刚检查DWARF规范,标准定义.debug_macinfo
部分尤其是储存关于宏的调试信息,这部分包含DW_MACINFO_define
记录每个定义的宏。
因此,如果您有库的调试版本,则可以尝试使用dwarfdump -m
或readelf --debug-dump=macro
来提取此信息。
但是:我已经在我的系统中的几个库上试过了,它们都没有包含任何宏记录。默认gcc
不会发出它们,库必须编译为gcc -g3
(该开关增加了调试信息级别)。我想这对你来说是个坏消息。
相关问题
- 1. 编译二进制文件
- 2. 如何在从GDB获取值后编辑二进制文件
- 3. 获取Github上已编译二进制文件的链接
- 4. 从CouchDB获取带有摇篮getAttachment的二进制文件?
- 5. 从二进制文件中获取double和int值的问题
- 6. 从二进制文件获取datetime
- 7. 从iPhone获取二进制文件
- 8. 在用mingw-w64编译的cygwin窗口中调试32位二进制文件
- 9. pip编译vs二进制文件
- 10. 使用VexCL“编译二进制文件”
- 11. 反编译非PC二进制文件
- 12. 如何编译二进制文件?
- 13. 测试已编译的二进制文件的功能
- 14. gdb:使用-g编译的二进制文件与使用-g编译的二进制编译的代码
- 15. GCC编译的二进制文件给予 “不能执行二进制文件”
- 16. g ++编译的二进制文件给“不能执行二进制文件”
- 17. 在Amazon MapReduce上调用已编译的二进制文件
- 18. 试图编写一个二进制文件,获取文本文件
- 19. 将特定测试编译为二进制文件
- 20. eclipse:无需二进制文件调试
- 21. 从C++中的二进制文件获取整数值时的垃圾值
- 22. 从二进制文件获取值类型c#
- 23. 从文件中读取二进制数
- 24. 调试/发布配置影响编译后的二进制
- 25. 调试属性如[DebuggerDisplay]是否仍然编译为发布二进制文件?
- 26. C++ - 读取二进制文件错误或编译器错误?
- 27. 从二进制获取位
- 28. 编辑和读取二进制文件?
- 29. 如何直接从Github编译R包二进制文件?
- 30. 如何从Windows反编译Linux二进制文件?
所以你告诉我,有没有办法从调试信息挖掘这个? – 2011-05-17 12:29:47
嗯,其实我错误地认为库编译没有调试信息。事实上,矮人可以提供帮助,让我稍后更新答案。 – 2011-05-17 12:40:20