2016-11-30 11 views
5

Я хотел бы получить отчет, в котором объясняется, почему exe, созданный с помощью Delphi, имеет определенный размер.Как анализировать размер файла exe, созданного с помощью Delphi?

Например что-то вроде этого:

filename: Project1.dpr - total size 100MB 
    Details: 
    - unit1.dcu - 20MB 
    - unit2.dcu - 60MB 
    - libraries.dcu - 20MB 

Я хотел бы иметь этот вид отчета, чтобы понять, почему ехе я только что построили это 120MB в размерах. Он использует много файлов из другого приложения, которое при построении составляет 90 МБ. Я добавил только две единицы (и удалил много), а размер изменился с 90 до 120 МБ. Я ожидал меньшего размера (учитывая многие удаленные единицы).

есть ли какой-нибудь инструмент, который уже делает это или есть способ изучить эту проблему из IDE?

+5

Вы удалили информацию об отладке из параметров проекта? Это уменьшит размер файла, он должен находиться в разделе связывания –

+2

@villekrumlinde написал инструмент для анализа размера единиц в exe-файле: [delphiunitsizes] (https://code.google.com/archive/p/ delphiunitsizes /). –

+0

@ LURD инструмент делает то, что мне нужно, если вы опубликуете ответ, я его приму. спасибо – LaBracca

ответ

0

Если вы не возражаете, чтение немного шестигранник, вы можете установить Map файл в Сегменты в настройках проекта - Delphi Составитель - Linking. Вы получите текстовый файл с именем yourexe .map, который содержит список включенных модулей и их соответствующую длину.

Это позволяет провести базовый анализ содержимого вашего exe. Тем не менее, он не ответит на ваш следующий вопрос: «Нужно ли мне все это?»

6

Я хотел бы получить отчет, в котором объясняется, почему exe, построенный с Delphi, имеет определенный размер ,

Ville Krumlinde написал инструмент, который сообщает размеры единиц в ехе файл, анализируя файл карты, созданный линкера: DelphiUnitSizes.

enter image description here

Project Options|Linking|Map File Набор для Publics или Detailed и сделать полную сборку ехе. Откройте полученный файл карты с помощью DelphiUnitSizes.

Другим подобным инструментом является MapFileStats от Eric Grange.


Могу ли я использовать EurekaLog без DebugInfo?

От EurekaLog documentation:

"Debug Information" (Linker страница, новый Delphi)/"Включить TD32 отладочной информации" (старый Delphi)/"Полная информация отладки" (C++ Builder) - опция внедряет отладочную информацию для внешнего отладчика в формате TD32 в ваше приложение. Эта опция может понадобиться, если вы используете «Запустить»/«Прикрепить к процессу», и Delphi не может найти отладочную информацию. Кроме того, EurekaLog использует информацию TD32 для заполнения отсутствующей информации в C++ Builder. Обратите внимание: размер вашего приложения Delphi может увеличиться в 5-10 раз, включив этот параметр (C++ Builder записывает информацию в отдельный .tds-файл), если вы не включили опцию «Отложить отладочную информацию в отдельном файле TDS».

И

«Карта файл» - включив эту опцию, вы говорите линкера в Delphi, чтобы создать отдельный файл .map вместе с исполняемым файлом. Файл карты содержит удобное для чтения представление отладочной информации. Различные настройки для этой опции управляют уровнем детализации вывода. Обычно нет необходимости менять его на что угодно, что отличается от «Off» или «Detailed». Файл-карта используется различными инструментами в качестве основного источника отладочной информации. Например, EurekaLog автоматически включает эту опцию и использует файл map для создания отладочной информации в своем собственном формате, а затем вводит ее в приложение. Вот почему вам редко приходится менять этот параметр вручную.

Это означает, что файл карты вставляется в файл exe, в то время как полная информация об отладке в exe является необязательной.