Модераторы: Poseidon, Snowy, bems, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Опции компилятора задаваемые в настройках, IDE Delphi(Project->Options->Compiler 
:(
    Опции темы
Delphist
  Дата 12.2.2009, 17:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphist Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2145
Регистрация: 3.2.2004
Где: всегда в сети

Репутация: 2
Всего: 3



В окне опции (Project->Options->Compiler) в IDE Delphi задаются настройка компилятора. На прикрепленном рисунке я красными квадратиками пометил 3 интересующие меня опции, в связи с которыми у меня возникли вопрос:
1) Если все эти опции снять для выходного (итогового) проекта как они повлияют на него, ну понятно размер уменьшиться, а еще
на что повлияют
2) Какие есть аналоги этим опциям для управлениями ими из под исходника, вот например для опции Optimization есть 
{$OPTIMIZATION ON}
{$OPTIMIZATION OFF}


Присоединённый файл ( Кол-во скачиваний: 34 )
Присоединённый файл  options.JPG 51,63 Kb


--------------------
ProcessInfo 1-ая моя программа (аналог spyxx.exe с гораздо большим функц-ом - внедрение dll в адр. простр. процесса, перехват API-функций, разбор приложения на окна мн.др).
Когда-то давным-давно использовал это...
PM MAIL ICQ   Вверх
bems
Дата 12.2.2009, 17:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: 31
Всего: 88



Stack frames влияет на возможность использовать внешние дебаггеры и профайлеры
Debug information - возможность отладки
Use debug DCUs - возможность отладки с входом в библиотечные исходники


--------------------
Обижено школьников: 8
PM MAIL   Вверх
Snowy
Дата 12.2.2009, 17:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Кроме Debug Information не нужно ничего снимать.
А посмотреть директивы очень просто. Зажми Ctrl и нажми 2 раза букву O.
PM MAIL   Вверх
Delphist
  Дата 12.2.2009, 17:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphist Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2145
Регистрация: 3.2.2004
Где: всегда в сети

Репутация: 2
Всего: 3



Цитата(Snowy @  12.2.2009,  18:47 Найти цитируемый пост)
Кроме Debug Information не нужно ничего снимать.

Скажи, пожалуйста, а почему не нужно выключать опцию:
Stack frames 
Use debug DCUs
 для выходного файла

Ну понятно когда мы только пишим проект, нам они нужны для удобной отладки, а вот в релизном проекте, зачем нам нужны эти опции.



--------------------
ProcessInfo 1-ая моя программа (аналог spyxx.exe с гораздо большим функц-ом - внедрение dll в адр. простр. процесса, перехват API-функций, разбор приложения на окна мн.др).
Когда-то давным-давно использовал это...
PM MAIL ICQ   Вверх
CodeMonkey
Дата 12.2.2009, 17:58 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1839
Регистрация: 24.6.2008
Где: Россия, Тверь

Репутация: 38
Всего: 89



F1:

Цитата
Программа представляет собой набор машинных команд. Текст программы представляет собой текстовый файл. Вопрос: как отладчик узнаёт, когда надо остановиться, если вы поставили бряк на строку в тексте? Где же соответствие между текстовым файлом и набором байт в exe-файле? Вот для такой связи и служит отладочная информация. Это, грубо говоря, набор инструкций типа: «машинные коды с 1056 по 1059 относятся к строке 234 модуля Unit1.pas». Вот с помощью такой информации и работает отладчик. По-умолчанию она включена. Делается это в опциях проекта на вкладке «Compiler» в разделе «Debugging». Обычно они все (или почти все) включены для отладочной версии программы и отключаются для конечной версии, которую вы будете распространять. Напомним, что после переключения любой из этих опций необходимо делать полный Build проекта, чтобы опция вступила в силу. 
«Debug information» (директива {$D+} или {$D-}) – это собственно и есть отладочная информация. Т.е. соответствие между текстом программы и её машинным кодом. Вы должны включить эту опцию, если хотите ставить бряки и выполнять пошаговую отладку. Отладочная информация сохраняется вместе с кодом модуля в dcu-файле. Т.е. один и тот же Unit1.dcu может быть скомпилирован как с отладочной информацией, так и без неё. Отладочная информация увеличивает время компиляции, размер dcu-файлов, но не влияет на размер и скорость работы полученного exe-файла (т.е. отладочная информация не подключается к exe-файлу). 
«Local symbols» (директива {$L+} или {$L-}) – является дополнением к отладочной информации. Она отвечает за соответствие между данными в exe-файле и именами переменных. Если вы включаете эту опцию, то отладчик позволит вам просматривать и изменять переменные. Также окно «Call Stack» будет способно отражать переданные в процедуры параметры.
«Reference info» – это дополнительная информация для редактора кода, которая позволяет ему отображать более подробную информацию об идентификаторах. Например, где была объявлена переменная.
«Use Debug DCUs» - эта опция переключает сборку вашей программы с отладочными модулями Delphi или с обычными. Если вы внимательно посмотрите на установку Delphi, то увидите, что pas файлы из папки Source никогда не используются для компиляции - а только для отладки. Для компиляции же используются уже готовые dcu-файлы из папки Lib. Это уменьшает время компиляции. Поскольку dcu могут быть скомпилированы с отладочной информацией и без неё, то в папке Lib есть два набора dcu-файлов: обычные и отладочные. Переключая эту опцию, вы указываете, какие из них использовать. Если вы выключите эту опцию, то не сможете заходить по F7 в стандартные функции и методы Delphi (т.к. для них будет отсутствовать отладочная информация).


Добавлено через 3 минуты и 37 секунд
Цитата(Delphist @  12.2.2009,  17:55 Найти цитируемый пост)
а вот в релизном проекте, зачем нам нужны эти опции

Для всякой диагностики.


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
Delphist
Дата 12.2.2009, 18:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphist Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2145
Регистрация: 3.2.2004
Где: всегда в сети

Репутация: 2
Всего: 3



Цитата(CodeMonkey @  12.2.2009,  18:58 Найти цитируемый пост)
F1:
Цитата
Программа представляет собой набор машинных команд. Текст программы представляет собой текстовый файл. Вопрос: как отладчик узнаёт, когда надо остановиться, если вы поставили бряк на строку в тексте? Где же соответствие между текстовым файлом и набором байт в exe-


Я так понимаю для релизной версии необходимо выключать Use debug DCUs, Local symbols ({$L-})  и Debug information({$D-}), остальные должны быть включены.

Правильно ли я понял?


--------------------
ProcessInfo 1-ая моя программа (аналог spyxx.exe с гораздо большим функц-ом - внедрение dll в адр. простр. процесса, перехват API-функций, разбор приложения на окна мн.др).
Когда-то давным-давно использовал это...
PM MAIL ICQ   Вверх
cemick
Дата 12.2.2009, 18:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 416
Регистрация: 6.7.2006
Где: Санкт-Петербург

Репутация: 2
Всего: 6



Еще включать опимизацию и выключать стек
PM MAIL WWW   Вверх
Delphist
Дата 12.2.2009, 18:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphist Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2145
Регистрация: 3.2.2004
Где: всегда в сети

Репутация: 2
Всего: 3



Цитата(cemick @  12.2.2009,  19:24 Найти цитируемый пост)
Еще включать опимизацию и выключать стек 

Значит получается, что для релиза нужно сделать так:
{$OPTIMIZATION ON}
Use debug DCUs (выключить, интересен аналог через директиву)
Stack frames (выключить, интересен аналог через директиву)
Local symbols ({$L-}) 
Debug information({$D-})


Правильно ли?


--------------------
ProcessInfo 1-ая моя программа (аналог spyxx.exe с гораздо большим функц-ом - внедрение dll в адр. простр. процесса, перехват API-функций, разбор приложения на окна мн.др).
Когда-то давным-давно использовал это...
PM MAIL ICQ   Вверх
CodeMonkey
Дата 12.2.2009, 20:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1839
Регистрация: 24.6.2008
Где: Россия, Тверь

Репутация: 38
Всего: 89



Зависит от того, какой программы. 

Обычная программа:

Все опции отладки (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?


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
bems
Дата 12.2.2009, 20:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: 31
Всего: 88



Цитата(CodeMonkey @  12.2.2009,  20:41 Найти цитируемый пост)
Stack Frames вообще вЫключать незачем.
ну местами это позволяет увеличить возможную глубину рекурсии



--------------------
Обижено школьников: 8
PM MAIL   Вверх
Delphist
  Дата 13.2.2009, 10:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphist Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2145
Регистрация: 3.2.2004
Где: всегда в сети

Репутация: 2
Всего: 3



Цитата(CodeMonkey @  12.2.2009,  21:41 Найти цитируемый пост)
Обычная программа:


CodeMonkey, меня именно интересовала обычная программа. 
Вот только не понятно, что делать с Local symbols включать или вЫключать для обычной релизной проги?
И что значит Use Debug DCUs - по вкусу smile 

Это сообщение отредактировал(а) Delphist - 13.2.2009, 10:49


--------------------
ProcessInfo 1-ая моя программа (аналог spyxx.exe с гораздо большим функц-ом - внедрение dll в адр. простр. процесса, перехват API-функций, разбор приложения на окна мн.др).
Когда-то давным-давно использовал это...
PM MAIL ICQ   Вверх
CodeMonkey
Дата 13.2.2009, 19:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1839
Регистрация: 24.6.2008
Где: Россия, Тверь

Репутация: 38
Всего: 89



Цитата(bems @  12.2.2009,  20:55 Найти цитируемый пост)
ну местами это позволяет увеличить возможную глубину рекурсии

Да, понятно, но речь шла об опциях проекта, а не локальных настройках.

>>> Вот только не понятно, что делать с Local symbols включать или вЫключать для обычной релизной проги?
Ещё раз для тех, кто не читает: все опции отладки (debug info, local symbols, ref info) выключать не имеет смысла.

>>> И что значит Use Debug DCUs - по вкусу
То и значит. А у вас есть два варианта трактовки этих слов? smile 


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
Delphist
Дата 13.2.2009, 19:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphist Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2145
Регистрация: 3.2.2004
Где: всегда в сети

Репутация: 2
Всего: 3



Цитата(CodeMonkey @  13.2.2009,  20:02 Найти цитируемый пост)
 и значит. А у вас есть два варианта трактовки этих слов? 

Use Debug DCUs вообще нужен ли экзешнику? Или он на него никак не влияет


--------------------
ProcessInfo 1-ая моя программа (аналог spyxx.exe с гораздо большим функц-ом - внедрение dll в адр. простр. процесса, перехват API-функций, разбор приложения на окна мн.др).
Когда-то давным-давно использовал это...
PM MAIL ICQ   Вверх
Christoph
Дата 13.2.2009, 21:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 667
Регистрация: 23.1.2008
Где: Харьков

Репутация: 1
Всего: 11



Цитата(Delphist @ 13.2.2009,  19:52)
Цитата(CodeMonkey @  13.2.2009,  20:02 Найти цитируемый пост)
 и значит. А у вас есть два варианта трактовки этих слов? 

Use Debug DCUs вообще нужен ли экзешнику? Или он на него никак не влияет

Use Debug DCUs использование отладочных версий стандартных модулей библиотеки компонентов VCL
То есть во время отлдаки можно посмотреть что делается с VCL,клавишой ф7

Это сообщение отредактировал(а) Christoph - 13.2.2009, 21:12


--------------------
user posted image
PM MAIL ICQ   Вверх
Pavelbej
Дата 14.2.2009, 00:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 419
Регистрация: 5.7.2005

Репутация: нет
Всего: 6



В моем проекте (Delphi 7) включение Use Debug DCU делает екзешник на 120 КБайт больше.
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0602 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.