【问题标题】:Application freezing?申请冻结?
【发布时间】:2014-03-10 18:28:54
【问题描述】:

是否可以编写一个 c++ 程序来为给定的 windows 进程执行以下操作:

1) pause an application
2) copy the memory of that application to the HDD
3) kill the application
4) at a later point start the application in the exact same state it was before by loading the saved memory

出于多种原因,人们想要这样做,我相信它对调试特别有帮助。

【问题讨论】:

  • 平台? Windows/Linux/...?因兴趣而投票。
  • 在虚拟机中运行应用程序,暂停或快照虚拟机。
  • 我标记的 Windows。 VM 是个好主意,但没有 VM 是否可行?
  • 您想从另一个应用程序还是从应用程序本身完成所有这些操作?
  • 来自另一个应用程序

标签: c++ windows


【解决方案1】:

不,不可能。进程映像中的一些值是内核句柄。当您恢复映像时,这些将没有相应的内核结构。如果你不相信我,你应该相信Raymond Chen:Why can't the system hibernate just one process?

可以创建转储,请参阅How to create a user-mode process dump file in Windows Vista and in Windows 7.dumpMiniDumpWriteDump。多年来,开发人员已经成功使用转储进行调试...

【讨论】:

  • 我相信你。除此之外,指针会发生什么?我相信不可能有完全相同的指针,对吧?
  • 指针会一样,都是虚拟内存。如果没有一些不存在的特殊内核支持,基本上不可能重新建立上下文(例如映射文件)。正如我所说,使用转储。
  • 啊哈,我明白了...有没有机会在其他操作系统上工作,比如 linux?
  • 我不知道。但是docker 会让你非常接近它,一个可移植的运行环境。用于部署,而不是用于调试。用于调试 Linux 生态系统使用...转储!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多