如何创建和恢复内存映像转储

How to create and restore memory image dump

本文关键字:恢复 内存 映像 转储 何创建 创建      更新时间:2023-10-16

那么,我有一个编码有问题的应用程序,其中有许多数据结构需要以特定的方式恢复。

我必须实现一次撤销,将应用程序恢复到一个非常复杂的操作之前的状态。

我的团队成员建议保存文件并恢复它,以确保所有内容都得到恢复。这样做是一个非常耗费资源和时间的操作。文件保存和加载可能需要一分钟或更长时间来处理所有解析和事件。

所以我有了这个想法:如果我可以以某种方式保存内存状态,就像在转储文件中一样,我可以保存图像状态并在必要时恢复它。

这是可能的吗?如果有,怎么做?

这通常是不可能的。如果你尝试了,它可能会以微妙和不可预测的方式失败。下面是一些潜在的问题:

  1. 进程可能存储它的进程ID和线程ID。当您恢复它时,没有好的方法来确保它获得相同的id。
  2. 进程可能有文件被锁定。没有办法确保这些文件处于相同的状态。
  3. 进程可能打开了不再存在的文件。考虑临时文件
  4. 进程可能有套接字或管道在内部或甚至对其他进程开放。
  5. 该进程可能操纵了与其他进程通信的共享状态,停止该共享状态处于不一致状态的进程可能会中断其他进程。
  6. 当您尝试重新启动进程时,进程可能对dll或其他可能不相同的可执行文件有锁定。

还有很多其他问题。一般来说,提供应用程序保存/恢复功能的平台要么在允许应用程序做的事情上非常有限,要么需要应用程序之间的密切合作。