c++ - 在 VS2010 中禁用迭代器调试

标签 c++ visual-studio-2010

我一直想知道为什么我现在正在修复的应用程序在 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/

相关文章:

android - GPU 与 CPU 编程 : inconsistencies in processing times

c++ - 可以容纳任何东西的非模板容器

visual-studio-2010 - 自重启应用程序在某些情况下崩溃

c++ - 在纯 native 代码中使用托管对象

c++ - 使用 C++/MSXML 中的变音符号根据嵌入式 XSD 资源验证 XML 文件

C++将文件复制到具有管理员权限的文件夹中

c++ - 使用 boost::asio::async_read 时出现段错误

visual-studio-2010 - 如何修复 Visual Studio 安装程序项目中的警告 1910 错误?

c++ - VS2012 C++ DLL兼容性

c++ - Microsoft C++ 预定义宏