![](/img/trans.png)
[英]How to add settings and make then be built into an existing exe file in Delphi
[英]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 File
到Publics
或Detailed
,並完整構建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.