ilyachalov (ilyachalov) wrote,
ilyachalov
ilyachalov

Category:

Конфигурации решений Release и Debug

Когда я описывал в прошлом году простейшую схему работы с Visual Studio Community 2017, то до конца не понимал, зачем при написании и отладке программ нужны конфигурации решений Release и Debug, которые есть по умолчанию (вообще можно и свои создавать).

По названиям я, конечно, догадывался, что конфигурация Debug нужна при отладке программ, а конфигурация Release — при сборке готового к распространению исполняемого файла. Сразу была видна и разница в размерах исполняемых файлов, полученных при сборке: в конфигурации Release размер файла был более, чем в четыре раза меньше, чем в конфигурации Debug (видимо, за счет различных оптимизаций).

Меня ввело в заблуждение то, что среда позволяла создавать и убирать точки останова и запускать пошаговую отладку (с заходом, с обходом) в обеих конфигурациях. «Зачем же нужна конфигурация Debug, если те же возможности доступны и в конфигурации Release?» — думал я.

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

При отладке же в конфигурации Debug можно не бояться, что нужная для анализа переменная будет при сборке удалена в результате оптимизации, так как, по-видимому, в этой конфигурации никакой оптимизации и не проводится, поэтому и исполняемый файл в разы больше, чем в конфигурации Release.
Tags: Инструмент, Программирование
Subscribe

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your IP address will be recorded 

  • 0 comments