Отладочные версии обычно создаются с очень небольшим количеством оптимизаций - поэтому, когда вы просматриваете их в отладчике с исходным кодом, есть хороший шанс, что между строкой исходного кода и тем, что происходит в программе, есть хорошее отображение.Когда вы шагаете по высокооптимизированному коду, он не очень хорошо отображается на исходном коде и его сложнее отлаживать.
Кроме того, всякий раз, когда кто-то использует #ifdef DEBUG
или эквивалентный код, этого кода нетверсия выпуска (конечно).Это может быть дополнительная проверка ошибок, ведение журнала, утверждение и т. Д.
Обычно интерфейс функции не должен отличаться между отладкой и выпуском, поэтому вы можете обычно связывать отладку и выпуск вместе без особых проблем.
Однако в некоторых случаях (особенно в Windows) это становится очень трудным из-за загрузки DLL, встроенной в некоторые библиотеки.Некоторые могут попытаться загрузить отладочные версии DLL, а некоторые могут захотеть выпустить.Они оба не могут быть загружены в один и тот же процесс.