Выполнение только части кода в режиме Release

у меня есть немного 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

Решение

Вы можете построить в режиме релиза и окружить подозрительный код

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

или сделать это старой школы — отладочные заявления.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]