错误地,我使用涉及“>”的命令删除了我的 Fortran 源文件的内容:
some command > file.f
我不使用版本控制或任何东西。但是,存在一个目标文件 file.o,如果这可能有帮助的话。是否有机会恢复 file.f 的内容?
可能有反编译器工具可以从编译的目标代码生成 Fortran 源代码,但它不是原始源代码:在编译过程中会丢弃注释和局部变量名称等内容,并且不会出现在目标文件中,因此它们可以不能恢复。反编译代码的结构也可能不同,特别是如果目标文件是通过优化编译的。
不幸的是,您不会从目标文件中取回原始代码。
反编译将适用于或多或少“为此目的而设计”的 Java 等字节码语言。
使用优化编译器,例如 Fortran(或 C 或 C++),您几乎不走运。
有一些工具可以恢复某种源文件(例如“boomerang”),但它与原始文件相去甚远,通常即使尝试也是浪费时间。
鉴于编译过程的性质,通常甚至不可能反转操作。不仅变量名称或非导出函数的名称(当然还有注释)等信息被丢弃,常量被替换为幻数,而且编译后的程序可能具有与您编写的代码完全不同的结构。
编译器会定期执行优化,例如将不变量移出循环、重新排列语句或删除公共子表达式(即使未显式启用优化,大多数编译器还是会进行微不足道的优化)。
编译器需要生成从外部观察到的行为“好像”的东西,但不一定等同于您编写的源代码。
在调试器中单步执行程序时也存在类似的现象。有时,变量不能被观察,或者你不能在特定的行上中断,并且整个语句显然只是“消失”了,让不知情的开发人员大吃一惊,因为编译器优化了它们。
总而言之,我能给出的最好的建议(尽管可能没有帮助)是承认您做了一些愚蠢的事情,从头开始重写源文件,并立即开始使用版本控制系统。