【问题标题】:Restore memory dump恢复内存转储
【发布时间】:2012-12-10 23:19:36
【问题描述】:

如果在没有调试器的计算机上进行测试,比如说客户的计算机,我遇到了一个错误,它可能已经破坏了程序的状态,但实际上并没有崩溃,我知道我可以使用 Windows 任务管理器进行内存转储(右键单击进程名称,创建转储文件)。

我可以将这些与 WinDbg 一起使用来查看内存等,但对我来说最有用的是能够将转储恢复到内存中,以便我可以继续与程序交互。这可能吗?如果是这样,怎么做?有什么工具可以恢复还是需要自己写。

【问题讨论】:

  • @m0skit0 我更新了我的问题。你能告诉我怎么做吗?
  • 我不知道 Windows,这就是你似乎正在使用的。对于 Linux,check this.

标签: debugging memory-dump


【解决方案1】:

典型的用户模式转储或小型转储不包含足够的信息来执行此操作。虽然它们包含所有用户模式内存,但它们不包含内核内存,因此文件或网络套接字等内核资源的打开句柄不会包含在转储中(即使它们是,硬盘很可能已更改,因此只是尝试写入硬盘可能会进一步损坏您的系统)。

我看到恢复内存转储的唯一方法是恢复完整内存和所有其他状态,如硬盘状态,这可以通过大多数虚拟机软件完成(但是,在恢复时会断开所有网络连接;谢天谢地,大多数程序可以比丢失文件句柄更好地处理丢失的网络连接)。

【讨论】:

    【解决方案2】:

    我发现我可以使用 Hyper-V 快照来做到这一点。如果我在虚拟机中运行我的程序,我可以选择转储内存,创建快照,必要时传输转储,稍后再回来,恢复快照并继续程序。

    【讨论】:

      猜你喜欢
      • 2016-12-17
      • 2012-01-19
      • 2015-08-29
      • 2015-06-19
      • 1970-01-01
      • 2019-06-27
      • 1970-01-01
      • 2012-10-28
      • 2020-07-16
      相关资源
      最近更新 更多