我不小心删除了一个尚未添加到版本控制中的.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 。