崩溃后C ++应用程序运行缓慢(MSVS,Win8 x64)

时间:2014-04-30 15:29:04

标签: c++ windows visual-c++

基本上,我有一个本机C ++应用程序,它在代码开发过程中不时会崩溃。在修复了一些错误后,它运行得相当顺利。但是,我注意到一种非常奇怪的行为让我很困惑。

这是一个基于CMake的项目,我可以选择将应用程序打包成zip文件。当我从新提取的zip中运行可执行文件时 - 应用程序正常运行(并且性能很高)。但是,如果它崩溃了几次 - 下一次启动行为是相同的,但一切都运行得非常慢。我有的测试用例(尽管是手动的)非常简单,我可以轻松地重复它。

一旦应用程序变慢,我所要做的就是重命名应用程序所在的文件夹,性能再次提升。直到它崩溃了几次。

显然,一旦摆脱崩溃,这不是问题。但是,在我看来,一旦系统(Win8.1 x64)检测到持续崩溃,它就会以某种不同的模式(?)运行它。看起来我从IDE(MSVS2013)运行的应用程序已收到此"惩罚"。因此,即使在发布模式下它运行速度也非常慢,更不用说调试了。

所以我向社区提出了几个问题。首先,你有没有观察过这种行为?第二,在应用程序崩溃时确实存储了一些系统范围信息的原因是减速吗?最后,你知道如何解决它吗?

注意:我可能会将源文件夹移动到其他位置,但这需要相当长的重建步骤。而且,我只是对正在发生的事情感到好奇。此外,系统重新启动和完全重建在同一文件夹中没有帮助。

某些上下文:应用程序使用Qt4(也称为Qt插件系统),MITK,ITK,VTK,CTK,OpenCASCADE,glew和相关库都是从这台机器上的源代码构建的。

干杯,   罗斯季斯拉夫。

1 个答案:

答案 0 :(得分:1)

在提出这个问题差不多一年后,问题出现了问题"自我解决",我想我找到了答案并决定将其发布在此处以防有人遇到类似的问题。

在我看来,我的应用程序在几次崩溃后由系统放入容错堆(FTH)。有关FTH的更多信息可以在MSDN找到。在调试特别恶劣的崩溃时,在开发者机器上禁用FTH(至少是暂时的)可能是有意义的。