簡體   English   中英

如何分析用Delphi構建的exe文件大小?

[英]How to analyze the filesize of an exe built with Delphi?

我想有一份報告清楚地解釋為什么用Delphi構建的exe具有特定的大小。

例如這樣的事情:

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

我想有這樣的報告來理解為什么我剛剛構建的exe是120MB的大小。 它使用來自另一個應用程序的許多文件,當構建時為90MB。 我只添加了兩個單元(並刪除了很多),大小從90改為120 MB。 我期待更小的尺寸(考慮到許多移除的單位)。

是否有一些工具已經做到這一點或有沒有辦法從IDE研究這個問題?

我想有一份報告清楚地解釋為什么用Delphi構建的exe具有特定的大小。

Ville Krumlinde編寫了一個工具,通過解析鏈接器創建的映射文件來報告exe文件中的單元大小: DelphiUnitSizes

在此輸入圖像描述

設置Project Options|Linking|Map FilePublicsDetailed ,並完整構建exe。 使用DelphiUnitSizes打開生成的映射文件。

另一個類似的工具是Eric Grange的MapFileStats


我可以在沒有debuginfo的情況下使用EurekaLog嗎?

來自EurekaLog文檔

“調試信息”(鏈接器頁面,新Delphi)/“包含TD32調試信息”(舊Delphi)/“完整調試信息”(C ++ Builder) - 此選項將TD32格式的外部調試器的調試信息嵌入到您的應用程序中。 如果使用“運行”/“附加到進程”並且Delphi找不到調試信息,則可能需要此選項。 此外,EurekaLog使用TD32信息在C ++ Builder中完成缺少的信息。 請注意,通過啟用此選項(C ++ Builder將信息寫入單獨的.tds文件),您的Delphi應用程序的大小可以增加5-10倍,除非您啟用“將調試信息放在單獨的TDS文件中”選項。

“映射文件” - 通過啟用此選項,您可以告訴Delphi的鏈接器創建一個單獨的.map文件以及您的可執行文件。 映射文件包含調試信息的人類可讀表示。 此選項的不同設置控制輸出的detalization級別。 通常,不需要將其更改為任何內容,這與“關閉”或“詳細”不同。 各種工具使用map-file作為調試信息的主要來源。 例如,EurekaLog會自動打開此選項並使用map-file以自己的格式創建調試信息,然后將其注入應用程序。 這就是您很少需要手動更改此選項的原因。

這意味着映射文件以某種方式注入到exe文件中,而將完整的調試信息包含在exe中是可選的。

如果你不介意閱讀一個小十六進制,你可以將Map文件設置為Project選項中的Segments - Delphi Compiler - Linking。 您將獲得一個名為yourexe .map的文本文件,其中包含所包含模塊的列表及其各自的長度。

這允許對exe的內容進行基本分析。 但是,它不會回答你的下一個問題,“我真的需要所有這些東西嗎?”......

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM