Я думаю, что я понимаю разницу между режимами выпуска и отладки. Основные отличия в том, что в режиме отладки исполняемый файл не оптимизирован (так как это может затруднить отладку), а также символы отладки.
При создании PCRE, одной из внешних зависимостей для WinMerge, я заметил режим сборки, который я раньше не видел: RelWithDebInfo.
Различие между Debug и RelWithDebInfo упоминается здесь: http://www.cmake.org/pipermail/cmake/2001-October/002479.html. отрывок: "RelwithDebInfo очень похож на режим Release. Он производит полностью оптимизированный код, но также создает базу данных программы и вставляет информацию об отладочной строке, чтобы дать отладчику хороший шанс угадать, где в коде вы находитесь в любое время".
Это звучит как действительно хорошая идея, однако не обязательно очевидно, как настроить. Эта ссылка описывает, как включить это для VС++: http://www.cygnus-software.com/papers/release_debugging.html
Я что-то упустил или не имеет смысла компилировать весь код выпуска как RelWithDebInfo?