我有一些我想调试的C++
代码。通常情况下,我的错误仅出现在某些无法用微小数据集复制的情况下,并且在经过多个函数后出现,我确信无效。
特别是,我首先需要将所有数据放在std::set
debug mode
中_ITERATOR_DEBUG_LEVEL 0
非常慢(并且在发布时合理),即使使用#ifdef _DEBUG
#undef _DEBUG
#define MODIFIED_DEBUG
#define NDEBUG
#endif
// build my expensive datastructure etc. etc.
#ifdef MODIFIED_DEBUG
#undef MODIFIED_DEBUG
#undef NDEBUG
#define _DEBUG
#endif
// execute my buggy code
预处理器指令也是如此。因此,我认为可能有一种方法可以在发布时执行部分代码,而只是在调试模式下执行代码的相关错误部分。
我尝试过这样的事情:
debug mode
然而,这仍然与release mode
一样慢。我有任何(简单)方法来获取STL
的速度仅用于部分代码吗?特别是,因为缓慢主要是由于.lib
。
(我想我可以编译一个_ITERATOR_DEBUG_LEVEL 0
来构建发布中的数据结构,并在我的代码中以调试模式使用库,但这只是调试程序的痛苦!)。
或者,有没有像STL
定义那样的技巧来加速调试模式下的Visual Studio 2010
?我正在使用{{1}}。
答案 0 :(得分:2)
您可以构建处于发布模式并使用
包围可疑代码#pragma optimize("",off)
//...
#pragma optimize("",on)
或者做旧学校 - 调试语句。