По опыту, основная причина ошибок, проявляющихся только в Release-версии, связана с работой с динамической памятью. Запустите программу в Debug-версии в отладчике и внимательно посмотрите на сообщения, в частности, на предупреждения - не "утекает" ли у Вас память? Ведь очень многие компиляторы "оборачивают", например, операторы new
/delete
в отладочной версии.
Вторая часть ошибок обычно связана с многопоточностью. Отладочная информация (да еще и подсоединенный отладчик) несколько замедляют работу программы, причем как-то удивительно по-разному для разных потоков(нитей), и поэтому взаимоблокировки, например, в отладочной версии не проявляются.
Еще одна подсказка - попробуйте собрать версию "Release без оптимизации". Т.е. все опции как в Debug'е, но без собственно отладочной информации. Посмотрите, что изменится. И наконец, соберите еще один вариант, "Debug с оптимизацией как в Release", и запустите и без отладчика и в отладчике. Такие нехитрые приемы в свое время мне очень помогали.
Успехов!