1

我有一些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.

4

1 回答 1

2

您可以在发布模式下构建并用

#pragma optimize("",off)
//...
#pragma optimize("",on)

或者做老派 - 调试语句。

于 2013-02-05T22:04:20.930 回答