Чем отличается запуск без отладки от запуска с отладкой?
Во-первых, компилятор всегда указывает на ошибки и неоднозначности. 
Во-вторых, не запуск с отладкой, а компиляция с отладочными символами.
В режиме отладки в собранный исполнительный бинарник добавляются специальные символы, позволяющие посмотреть, в какой функции программа завершилась аварийно. Отладочный бинарник позволяет пройти по стеку вызовов функций, выполнить каждую инструкцию процессора или C/C++-строчку по-порядку. Поставить брекпойнт и.т.д. Подробнее тут
А еще, что немаловажно - есть отличия в инициализации переменных начальными параметрами. Касается вижуалСтудии.