我正在调试(在Visual Studio 2008中)我用C ++编写的实用程序。将大量输入文件与我的慢速机器相结合,可能需要花费6个多小时来达到我需要观察程序执行是否存在违规行为的程度。
我可能在这里抓住了吸管,但有人知道功能或插件或Visual Studio中的某些东西,我可以保存程序执行状态,以便我可以绕过我需要的时间是吗?
答案 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 。您可以使用参数编写正常的小型转储或完整内存转储。如果可能,这应该从一个单独的过程完成(您可以在自己的过程中等待句柄)。