5

我正在调试(在 Visual Studio 2008 中)我用 C++ 编写的实用程序。将大量输入文件与我的慢速机器相结合,可能需要 6 个小时以上才能到达我需要观察程序执行是否有异常的地步。

我可能在这里抓住了稻草,但是是否有人知道 Visual Studio 中的功能或插件或类似的东西,我可以在其中保存程序执行状态,以便我可以绕过到达我需要的地方所需的时间?

4

2 回答 2

5

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

于 2011-05-24T15:18:15.167 回答
-1

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

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

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

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

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

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

于 2011-05-24T15:23:42.777 回答