我一直想知道为什么我现在正在修复的应用程序在 Debug模式下与 Release模式相比运行得如此缓慢。该比率最高可达600倍,其中500ms操作需要5分钟。
我已经放弃了任何可用于 Windows 的分析器,它们都有一些让它们很糟糕的特性,无论是崩溃,还是不加载符号……所以我决定分析统计。我使用暂停按钮随机暂停了执行。当我暂停时,这段代码片段大部分时间都出现了:
#if _ITERATOR_DEBUG_LEVEL == 2
if (_Myproxy != 0)
{ // adopted, remove self from list
_Iterator_base12 **_Pnext = &_Myproxy->_Myfirstiter;
while (*_Pnext != 0 && *_Pnext != this)
_Pnext = &(*_Pnext)->_Mynextiter;
if (*_Pnext == 0)
_DEBUG_ERROR("ITERATOR LIST CORRUPTED!");
*_Pnext = _Mynextiter;
_Myproxy = 0;
}
#endif /* _ITERATOR_DEBUG_LEVEL == 2 */
这是在 Visual Studio 文件中。我如何追踪 _ITERATOR_DEBUG_LEVEL
定义并公布了该设置 _HAS_ITERATOR_DEBUGGING
为零会阻止 _ITERATOR_DEBUG_LEVEL
来自2
.
现在我将发布 _HAS_ITERATOR_DEBUGGING
所在的代码正在设置(编辑:它是文件 Microsoft Visual Studio 10.0\VC\include\yvals.h
),但是当我转到项目属性时 ->
C/C++ ->
预处理器并添加 _HAS_ITERATOR_DEBUGGING=0
,Visual Studio 进入无限循环,我必须终止进程 devenv.exe
.
幸运的是,我没有未保存的更改(断点除外)。为什么会发生这种情况以及如何解决它?许多功能无法在 Debug模式下进行测试,因为这可能需要数年时间。
VS 版本信息:
Microsoft Visual Studio 2010
Version 10.0.40219.1 SP1Rel
最佳答案
这个链接说你不应该直接控制这个宏:
https://msdn.microsoft.com/en-us/library/aa985939.aspx?f=255&MSPPError=-2147217396
尝试设置 _ITERATOR_DEBUG_LEVEL=0
关于c++ - 在 VS2010 中禁用迭代器调试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33017198/