如何使用目标文件还原意外覆盖的源文件

时间:2015-03-18 05:32:48

标签: linux undelete

错误地,我使用涉及“>”的命令删除了我的Fortran源文件的内容:

some command > file.f

我不使用版本控制或任何东西。但是,有一个目标文件,file.o,如果可能有任何帮助。 是否有机会恢复file.f的内容?

2 个答案:

答案 0 :(得分:0)

可能有反编译工具可以从编译的目标代码生成Fortran源代码,但它不是原始源代码:在编译期间会丢弃注释和局部变量名等内容进程并且不存在于目标文件中,因此无法恢复它们。反编译代码的结构也可能不同,特别是如果目标文件是通过优化编译的。

不幸的是,你不会从目标文件中取回原始代码。

答案 1 :(得分:0)

反编译可以正常使用像Java这样的字节码语言,它们或多或少地为此目的而设计#34;。
使用优化编译器,例如Fortran(或C或C ++),你几乎没有运气。

恢复某种源文件的工具(例如"回旋镖"),但它将远离原始文件,通常甚至浪费时间尝试。

鉴于编译过程的性质,通常甚至不可能来反转操作。不仅丢弃了诸如变量名称或非导出函数(当然还有注释)的名称等信息,而且常量被幻数替换,而且编译后的程序可能与您编写的代码完全不同。
编译器会定期执行优化,例如将不变量移出循环,重新排列语句或消除常见的子表达式(即使未明确启用优化,大多数编译器也会进行简单的优化)。

编译器需要生成一些行为"好像"从外面观察,但不一定与你所写的源代码相同 在调试器中单步执行程序时会出现类似的现象。有时,变量无法被观察,或者你无法在某一特定线上中断,而整个陈述显然只是“消失了”#34;令不知情的开发人员感到惊讶,因为编译器对它们进行了优化。

总之,我可以提供的唯一最好的建议,无论是否有用,都是承认你做了一些愚蠢的事情,从头开始重写源文件,开始使用版本控制系统现在