| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Опции компилятора задаваемые в настройках |
| Автор: Delphist 12.2.2009, 17:14 |
| В окне опции (Project->Options->Compiler) в IDE Delphi задаются настройка компилятора. На прикрепленном рисунке я красными квадратиками пометил 3 интересующие меня опции, в связи с которыми у меня возникли вопрос: 1) Если все эти опции снять для выходного (итогового) проекта как они повлияют на него, ну понятно размер уменьшиться, а еще на что повлияют 2) Какие есть аналоги этим опциям для управлениями ими из под исходника, вот например для опции Optimization есть {$OPTIMIZATION ON} {$OPTIMIZATION OFF} |
| Автор: bems 12.2.2009, 17:46 |
| Stack frames влияет на возможность использовать внешние дебаггеры и профайлеры Debug information - возможность отладки Use debug DCUs - возможность отладки с входом в библиотечные исходники |
| Автор: Snowy 12.2.2009, 17:47 |
| Кроме Debug Information не нужно ничего снимать. А посмотреть директивы очень просто. Зажми Ctrl и нажми 2 раза букву O. |
| Автор: Delphist 12.2.2009, 17:55 |
Скажи, пожалуйста, а почему не нужно выключать опцию: Stack frames Use debug DCUs для выходного файла Ну понятно когда мы только пишим проект, нам они нужны для удобной отладки, а вот в релизном проекте, зачем нам нужны эти опции. |
| Автор: CodeMonkey 12.2.2009, 17:58 | ||
F1:
Добавлено через 3 минуты и 37 секунд Для всякой http://forum.vingrad.ru/index.php?showtopic=235599&view=findpost&p=1694019. |
| Автор: cemick 12.2.2009, 18:24 |
| Еще включать опимизацию и выключать стек |
| Автор: Delphist 12.2.2009, 18:30 |
Значит получается, что для релиза нужно сделать так: {$OPTIMIZATION ON} Use debug DCUs (выключить, интересен аналог через директиву) Stack frames (выключить, интересен аналог через директиву) Local symbols ({$L-}) Debug information({$D-}) Правильно ли? |
| Автор: CodeMonkey 12.2.2009, 20:41 |
| Зависит от того, какой программы. Обычная программа: Все опции отладки (debug information и т.п.) вообще на готовый модуль не влияют, т.к. отладочная информация в exe/DLL не хранится => смысла их выключать я не вижу (Use Debug DCUs - по вкусу). Оптимизацию я вообще не вижу смысла выключать. Разве что совсем страшное что-то напишете. Stack Frames вообще включать незачем. Генерацию map-файла выключаем. Include TD32 debug info - включаем только для отладки внешнего процесса. Соответственно, Include remote debug info - включаем только для удалённой отладки. Программа, в которой используется механизм диагностики исключений (грубо говоря) - например, JclHookExcept/JclDebug, EurekaLog, madExcept: Все опции отладки (debug information и т.п.) держать включёнными, т.к. в противном случае не будет доступна отладочная информация. Соответственно, ваши информационные механизмы пойдут лесом. Use Debug DCUs если при отладке ещё можно ставить по вкусу, то для релиза - строго включать. Оптимизацию я вообще не вижу смысла выключать. Разве что совсем страшное что-то напишете. Stack Frames вообще вЫключать незачем. Генерацию map-файла включаем на полную (ок, некоторые эксперты включают это автоматом). Include TD32 debug info - включаем только для отладки внешнего процесса. Соответственно, Include remote debug info - включаем только для удалённой отладки. P.S. Все директивы можно посмотреть в справке. Неужели так сложно нажать F1 в окне настроек проекта на вкладке Compiler? |
| Автор: bems 12.2.2009, 20:55 |
| ну местами это позволяет увеличить возможную глубину рекурсии |
| Автор: Delphist 13.2.2009, 10:38 |
CodeMonkey, меня именно интересовала обычная программа. Вот только не понятно, что делать с Local symbols включать или вЫключать для обычной релизной проги? И что значит Use Debug DCUs - по вкусу |
| Автор: CodeMonkey 13.2.2009, 19:02 |
Да, понятно, но речь шла об опциях проекта, а не локальных настройках. >>> Вот только не понятно, что делать с Local symbols включать или вЫключать для обычной релизной проги? Ещё раз для тех, кто не читает: все опции отладки (debug info, local symbols, ref info) выключать не имеет смысла. >>> И что значит Use Debug DCUs - по вкусу То и значит. А у вас есть два варианта трактовки этих слов? |
| Автор: Delphist 13.2.2009, 19:52 |
Use Debug DCUs вообще нужен ли экзешнику? Или он на него никак не влияет |
| Автор: Christoph 13.2.2009, 21:09 | ||
Use Debug DCUs использование отладочных версий стандартных модулей библиотеки компонентов VCL То есть во время отлдаки можно посмотреть что делается с VCL,клавишой ф7 |
| Автор: Pavelbej 14.2.2009, 00:56 |
| В моем проекте (Delphi 7) включение Use Debug DCU делает екзешник на 120 КБайт больше. |
| Автор: CodeMonkey 14.2.2009, 12:55 | ||
Только виновата в этом не сама опция, а какой-то другой код. Опция ничего не делает, кроме как меняет набор DCU-х. Одни из которых собраны с отладочной информацией, вторые - без. Отладочная информация по-умолчанию в exe не идёт. Соответственно, переключение опции вообще не влияет на окончательный exe-файл (*). Но если вы используете, например, JCL, madExcept, EurekaLog или аналогичные инструменты - то, разумеется, эта опция будет влиять на результат. P.S. (*) Строго говоря, это не совсем верно. Иногда отладочные и релизные версии DCU-х отличаются незначительными изменениями кода. Например, http://www.delphikingdom.ru/asp/answer.asp?IDAnswer=66136 (для упрощения отладки). Иногда может отключаться оптимизация. Но влияние этих изменений очень мало. Например, в D2009 (несмотря на отличия debug и release DCU) переключение опции не изменяет размер exe (в нём меняется всего несколько байт). |
| Автор: Bose 15.2.2009, 01:51 |
Delphist вернулся, и как всегда тупит жжот Добавлено @ 01:52 сорри за оффтоп |
| Автор: Delphist 16.2.2009, 10:03 |
Мой стиль |