2010-09-14 105 views
1

我有一个用C++编写的模拟器,它读取一个文件并逐行处理它。这是一个耗时的过程。我经常遇到朗姆酒时间错误,程序在15-20分钟后崩溃。我开始调试,程序花费相同的时间来达到我设定的中断点。我检查一些变量,并逐步查看代码,看看发生了什么,进行一些更改并重新启动我的程序。大多数情况下,在进行实际的代码更改之前,我必须多次调试该程序。每次等待15分钟以便执行到达断点是浪费的。有没有办法让程序状态保存一个特定的断点,然后再从那里开始运行/调试。程序/ IDE保存正在运行的程序的状态并稍后恢复

我相信我不是唯一一个必须面对这个问题的人。必须有解决方案。

回答

0

我认为最好的方法是具体情况。在你的情况下,创建一些格式来保存你的进度并保存它,或者随着你的进展将它更新到一个文件中。然后,重新启动后,确定是恢复还是重新启动的一些逻辑。

另外,将程序分解成可伪造或跳过的阶段?

如果不这样做,则需要在“安全恢复点”和重新加载时进行低效且怀疑甚至可能的内存/注册表转储。我认为最接近实现的是具有“快照”的全环境虚拟化(VMWare Workstation,Windows Virtual PC?)这可能是一种选择,但速度几乎一样慢。

+0

有很多使用的数据结构。即使我可以做这样的事情,但要花费很多时间来构建这样的事情并验证它。我还没有自己建立模拟器。这是别人的代码,它有超过50个源文件。另外,我不能跳过阶段,因为它基本上是逐行读取一个非常大的文件。步骤很小,但文件很大 – cyrux 2010-09-14 23:58:11

+0

嗯,听起来像一个艰难的任务 – 2010-09-15 01:19:19