我不小心删除了一个我没有添加到版本控制中的 .h 文件,但我仍然有 .h.gch。有没有办法反编译 .gch?
最佳答案
您可以尝试运行 strings
实用程序。 GCH 定义了很多内部 gcc 宏,所以我建议你用字符串做两个转储:
首先是你的 gch:$ strings file.h.gch
第二个是预编译的空头文件(或者,如果你记得的话,你的头文件中包含了什么——也包含在这个文件中)
然后您可以保存两个转储并进行差异运行:
以我为例:
#define d1234
#undef dsgf
int asdfgh(char a);
int ghjkl(int g, int h);
diff 中所有的名字都在最上面:
1074a1075
> asdfgh
1189a1191
> d1234
1200a1203
> dsgf
1287a1291
> ghjkl
如何获取函数的结构和参数——我不知道。
但我建议您是否可以使用此 pch(例如,将 #include "file.h"
替换为 #pragma GCC pch_preprocess "file.h.gch"
)-那么您可以使用 -fdump-tree-all-all
和 -frtl-dump-all-all
进行树和 rtl 转储。一些转储将包含更多信息,这些信息源自丢失的 header 。
关于c - 反编译一个gch文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6417927/