Delphi: FastMM делает ваши исполняемые файлы больше?

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

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

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

3 ответа

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

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

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

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

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

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

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

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

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

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

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

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

Другие вопросы по тегам