如何恢复被错误编译命令覆盖的源代码?

Pav*_*tar 8 linux terminal c++ ubuntu

我已经编写了 C++ 的源代码并使用以下命令行将其编译为相同的名称。

例如:

c++ source-code.cpp -o source-code.cpp
Run Code Online (Sandbox Code Playgroud)

现在我的源代码已经被可执行程序取代了。有什么方法可以检索我的源代码。 我是 Linux 新手,所以我不确定是否有任何方法可以撤消我所做的事情。

Dig*_*oss 15

可能不是,试试源代码控制?


您可能很幸运地打开了一个编辑器或一个带回滚的终端窗口。

而在马锁紧锁的部门,即使在处理玩具程序时,一个好的开发实践是使用源代码控制。

使用githg,你可以做

$ hg init
$ hg add source.cpp
$ hg commit -m 'change' source.cpp
$ # edit here, and you can optionally revert to the original
$ hg commit -m 'change' source.cpp
$ # now if you clobber it you can go back to one of the previous revisions
Run Code Online (Sandbox Code Playgroud)


nic*_*ico 7

该选项-o指定输出文件,这就是覆盖源代码的原因。

你应该用过

c++ source-code.cpp -o executable-name
Run Code Online (Sandbox Code Playgroud)

至于从编译文件中检索原始源代码:不,你不能。你可以反汇编它(所以得到你程序的汇编版本),我相信那里有一些小程序可以从中重写一些“C++风格”的代码,但这永远不会像你的原始代码那样超过C++ 中的一条指令可能对应于相同的机器代码。


小智 6

你用的哪个编辑器。如果你使用 Vim 或其他东西,很可能会有 source-code.cpp~ 备份文件。