我一直在想,为什么应用程序我现在正在修复运行,所以在调试模式下运行速度相对于发行版来说太慢了。该比率可高达600倍,其中500ms运行需要5分钟。在VS2010中禁用迭代器调试
我已经放弃了可用于windows的任何profiler,他们都有一些属性,使他们吸吮,无论是崩溃,没有加载符号...所以我决定从统计。我用暂停按钮随机暂停执行。这段代码片段在我暂停时大部分时间出现:
#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++ ->
Preprocesor并添加_HAS_ITERATOR_DEBUGGING=0
,在Visual Studio进入死循环我必须杀掉devenv.exe
。
幸运的是,我没有未保存的更改(断点除外)。为什么会发生这种情况,以及如何解决这个问题?许多功能无法在调试模式下进行测试,因为它可能需要几年的时间。
VS版本信息:
Microsoft Visual Studio 2010
Version 10.0.40219.1 SP1Rel
您可以从断点窗口将断点导出到文件。所以你不必一次又一次手动设置它们。我无法在VS10中的简单测试项目中重现此错误,因此它看起来要么取决于您的项目,要么取决于您的VS更新。你有没有安装VS10 SP1? – Ari0nhh
@ Ari0nhh这可能取决于项目的确。我不是作者,所以我很迷茫。我想我需要有人告诉我我应该寻找什么。我用visual studio版本信息更新了我的问题。它具有SP1和Microsoft自动更新服务的多个更新。 –
您是否尝试禁用所有插件/扩展? – typ1232