在Release模式下仅执行部分代码

时间:2013-02-05 22:01:53

标签: c++ visual-studio-2010 debugging c-preprocessor visual-studio-debugging

我有一些我想调试的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}}。

1 个答案:

答案 0 :(得分:2)

您可以构建处于发布模式并使用

包围可疑代码
#pragma optimize("",off)
//...
#pragma optimize("",on)

或者做旧学校 - 调试语句。