保存程序状态(visual studio 2008)

时间:2011-05-24 15:11:10

标签: c++ visual-studio visual-studio-2008 savestate

我正在调试(在Visual Studio 2008中)我用C ++编写的实用程序。将大量输入文件与我的慢速机器相结合,可能需要花费6个多小时来达到我需要观察程序执行是否存在违规行为的程度。

我可能在这里抓住了吸管,但有人知道功能或插件或Visual Studio中的某些东西,我可以保存程序执行状态,以便我可以绕过我需要的时间是吗?

2 个答案:

答案 0 :(得分:5)

我不确定Visual Studio中有可能做这样的事情,但是如果你找不到任何东西我会尝试使用虚拟机并保存机器的状态。 它可能会非常缓慢,但从长远来看可能有所帮助。 祝你好运

答案 1 :(得分:-1)

您需要的是conditional breakpoint ...有关详细信息,请参阅此网址:

http://msdn.microsoft.com/en-us/library/7sye83ce%28v=VS.90%29.aspx

这个想法是你知道断点有效的条件是什么,然后当这些条件为真时,断点将触发,暂停执行。然后你可以在早上出现并开始逐步完成代码。

如果你 DO 有一个确切的点你想要中断,你可以放入一个程序性断点DebugBreak(),这将导致抛出一个断点异常。 Visual Studio调试器将捕获它并在此时暂停执行。

或者,启用gflags使用ADPlus运行程序,并且在您认为导致问题的代码处抛出未处理的异常。让程序崩溃,ADPlus将生成进程内存的完整崩溃转储。您启用了gflags的事实意味着您将获得具有良好边框的内存分配(通常为0xCDCDCDCD)以便于调试。

最后,您还可以使用Microsoft的DbgHelp.dll library生成一个小型转储,它可以编程方式捕获各种级别的信息(不会因上述解决方案而导致崩溃)。您想要的功能是 MiniDumpWriteDump 。您可以使用参数编写正常的小型转储或完整内存转储。如果可能,这应该从一个单独的过程完成(您可以在自己的过程中等待句柄)。