у меня есть немного 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
,
Вы можете построить в режиме релиза и окружить подозрительный код
#pragma optimize("",off)
//...
#pragma optimize("",on)
или сделать это старой школы — отладочные заявления.
Других решений пока нет …