Delphi: FastMM делает ваши исполняемые файлы больше? - PullRequest
2 голосов
/ 28 октября 2010

Делает ли FastMM ваши исполняемые файлы больше? Я замечаю, что мое приложение растет примерно на 300-500 КБ, что довольно много для меня. Я уже отключил опцию компилятора delphi, чтобы исключить отладочную информацию, но размер не меняется.

Я использую FullDebugMode в FastMM, это влияет на размер? Но когда я пытаюсь отключить его, он ищет libc, который я не смог найти.

Помогите пожалуйста ... Я использую D5

Ответы [ 3 ]

9 голосов
/ 28 октября 2010

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

Во-вторых, половина мегабайта велика, только если вы все еще распространяете на дискетах. Действительно ли это много места, зависит от того, насколько большой была ваша программа заранее. Сожмите вашу программу при распространении, и вы вряд ли заметите разницу.

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

Опция компилятора об отладочной информации не должна иметь никакого эффекта. Он контролирует, включена ли отладочная информация в файлы DCU; эта информация всегда исключается из EXE-файлов (если вы не говорите об отладочной информации TD32, но вы не должны включать ее, так как вы не используете Turbo Debugger).

Если ваша программа ищет модуль Libc, значит, вы сделали больше, чем просто включили режим полной отладки. Вы как-то включили в режиме Linux. Вы не используете Linux, поэтому не включайте этот режим. Если вы застряли, замените вашу копию FastMM4Options.inc на оригинальную версию и начните сначала.

1 голос
/ 28 октября 2010

FullDebugMode использует чистую паскаль-версию диспетчера кучи FastMM4.

Эта версия помечает блоки, так что любая утечка памяти будет отслеживаться и сообщаться.

Но во всех случаях этоНИКОГДА не добавит 300-500 КБ к вашему исполняемому файлу.

Это будет медленнее, чем "обычный" режим FastMM4, из-за версии кода на паскале (менее оптимизированной, чем asm) и из-за дополнительных провероквыполнено (например, маркировка блоков).

Но увеличение размера исполняемого файла на 300-500 КБ НЕ связано с FullDebugMode.Это всего лишь несколько десятков КБ (в худшем случае), потому что большая часть используемого кода остается во внешней библиотеке FastMM_FullDebugMode.dll.

Вы должны были вручную изменить некоторые параметры проекта, такие как информация TD32 илиинформация об удаленной отладке.Но, насколько я понимаю, эта информация не требуется для FastMM4 в режиме полной отладки.

0 голосов
/ 28 октября 2010

FastMM должен компилироваться с D5 и не должен искать libc, которая является библиотекой Linux. Существует проблема с последними версиями при компиляции в D5 (, например ), попробуйте последний исходный код из репозитория исходного кода?

...