Информация об изменениях

Сообщение Re[19]: C++ illegal instruction от 20.08.2025 18:48

Изменено 20.08.2025 18:53 rg45

Re[19]: C++ illegal instruction
Здравствуйте, Pzz, Вы писали:

Pzz>>>Да и собственно, я не и делаю отдельных отладочных сборок, зачем мне тестировать и отлаживать дебугную сборку, если пользователю я поставляю релизную?


R>>Ну и зря. Отладочные сборки могут помочь обнаружить в программе разного рода UB: неинициализированные переменные, битые ссылки, заезды по памяти и пр.


Pzz>Мы, может, о чём-то разном говорим?


Pzz>Я подразумеваю под отладочной сборкой сборку с отладочной информацией, выключенной оптимизацйей и включенными проверками. А под релизной — без отладочной информации, с включенной оптимизацией и без проверок.


Всё верно, и я об этом же. В таких конфигурациях обычно генерируется дополнительный код облегчающий отладку. Например, память помечается специальными значениями при окончании времени жизни объектов, бросаются исключения при обнаружении проблем наподобие перечисленных выше и т.п. Ну и assert-ы также выбрасывают исключения в случае нарушения ожиданий.
Re[19]: C++ illegal instruction
Здравствуйте, Pzz, Вы писали:

Pzz>>>Да и собственно, я не и делаю отдельных отладочных сборок, зачем мне тестировать и отлаживать дебугную сборку, если пользователю я поставляю релизную?


R>>Ну и зря. Отладочные сборки могут помочь обнаружить в программе разного рода UB: неинициализированные переменные, битые ссылки, заезды по памяти и пр.


Pzz>Мы, может, о чём-то разном говорим?


Pzz>Я подразумеваю под отладочной сборкой сборку с отладочной информацией, выключенной оптимизацйей и включенными проверками. А под релизной — без отладочной информации, с включенной оптимизацией и без проверок.


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