Release версия проекта в Visual Studio 2008 работает не правильно. Почему?

Рейтинг: 3Ответов: 1Опубликовано: 12.04.2011

Столкнулся с проблемой. Когда проверяю прогу на работоспособность в Debug версии, всё работает как задумывалось. Как только собираю проект в Release версии и запускаю, появляются разные глюки, которых не было. Программу плющит не подетски. Почему это происходит и как это исправить? Это проблема компилятора?

Ответы

▲ 4Принят

По опыту, основная причина ошибок, проявляющихся только в Release-версии, связана с работой с динамической памятью. Запустите программу в Debug-версии в отладчике и внимательно посмотрите на сообщения, в частности, на предупреждения - не "утекает" ли у Вас память? Ведь очень многие компиляторы "оборачивают", например, операторы new/delete в отладочной версии.

Вторая часть ошибок обычно связана с многопоточностью. Отладочная информация (да еще и подсоединенный отладчик) несколько замедляют работу программы, причем как-то удивительно по-разному для разных потоков(нитей), и поэтому взаимоблокировки, например, в отладочной версии не проявляются.

Еще одна подсказка - попробуйте собрать версию "Release без оптимизации". Т.е. все опции как в Debug'е, но без собственно отладочной информации. Посмотрите, что изменится. И наконец, соберите еще один вариант, "Debug с оптимизацией как в Release", и запустите и без отладчика и в отладчике. Такие нехитрые приемы в свое время мне очень помогали.

Успехов!