我将如何去了解一个过程的快照以保存其状态以供将来调查?这可能吗?

问题描述:

这是否可能我不知道,但它会有用!我将如何去了解一个过程的快照以保存其状态以供将来调查?这可能吗?

我有一个定期失败的进程(在Windows 2000中运行)。然后我只有一次机会在重启之前对它做出反应,并痛苦地等待它再次失败。我没有编写该过程,因此没有源代码进行调试。失败似乎是随机的。

通过对过程的快照,我可以反复快速地测试对故障的反应。

我曾想过在虚拟机内部运行,但在这种情况下这是不可能的。

编辑: @乔恩笼问:

当你说一个快照,你的意思是捕捉过程时,它的即将失败(包括内存,程序状态等等等)...然后重播最后几秒钟,看看它对其他组件有什么影响?

这正是我的意思!

+0

您使用哪种编程语言? – 2008-09-26 08:19:24

我认为minidump是你在找什么。

也可以使用Userdump

的用户模式进程自卸车 (用户转储)转储任何正在运行的Win32 进程的内存图像(包括 系统进程如CSRSS.EXE, WINLOGON.EXE,服务.exe等)在 飞,没有附加调试器, 或终止目标进程。 通过使用标准的 调试工具,可以分析生成的转储文件或调用 。

这个article告诉你如何使用它。

我最好的选择是在调试器中启动该过程(OllyDbg是我的首选工具)。 这个过程会暂停一个异常,你可以试着弄清楚在此之前发生了什么。

这需要对汇编程序有所了解,并且不允许为进程分析创建快照。您需要为此编写自己的调试程序 - 理论上应该可行。

你想捕捉什么? UDP/TCP消息?一些进程间通信?

我问的原因是,捕捉软件输出的内容(而不是过程本身)然后编写一个新过程来模拟这些相同的交互可能更容易?我正在使用我的一些当前项目中的一个小python脚本...