2016-11-30 7 views
5

私は、Delphiでビルドされたexeが特定のサイズを持っている理由を明確に説明するレポートを持っています。私はちょうど建てexeファイルのサイズが120メガバイトである理由を理解するために、レポートのこの種を持っているしたいと思いますDelphiでビルドされたexeのファイルサイズを分析するには?

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

:このような例を何かのため

。別のアプリケーションの多くのファイルを使用して、90MBのファイルを作成します。私はちょうど2つのユニットを追加し(そして多くを削除しました)、サイズは90から120 MBに変更されました。私はより小さいサイズ(多くの取り外したユニットを考えて)を期待していました。

既にこれを行っているツールや、IDEからこの問題を研究する方法はありますか?

+5

プロジェクトオプションからデバッグ情報を削除しましたか?それはファイルサイズを減らすでしょう、それはリンクセクションの下にあるべきです –

+2

@villekrumlindeはexeファイルのユニットのサイズを分析するためのツールを書きました:[delphiunitsizes](https://code.google.com/archive/p/ delphiunitsizes /)。 –

+0

@LURDツールは私が必要とすることを行います。あなたが回答を投稿するなら、それを受け入れます。 thanks – LaBracca

答えて

0

あなたは少し進を読んで気にしない場合は、セグメントのプロジェクトオプションでマップファイルを設定することができます - Delphiコンパイラ - リンク。含まれているモジュールとそれぞれの長さのリストを含むという名前のテキストファイル、yourexe .mapが得られます。

これにより、exeファイルの内容を基本的に分析することができます。しかし、あなたの次の質問には答えません。「本当にこのすべてが必要ですか?」

6

デルファイで構築されたexeが特定のサイズを持っている理由を明確に説明しています。 DelphiUnitSizes

Ville Krumlindeは、リンカによって作成されたマップファイルを、解析することにより、exeファイルでのユニットサイズをレポートツールを書きました。

enter image description here

PublicsまたはDetailedProject Options|Linking|Map Fileを設定し、exeファイルの完全なビルドを作ります。結果のマップファイルをDelphiUnitSizesで開きます。

もう1つの同様のツールは、Eric GrangeのMapFileStatsです。


は私がのdebuginfoなしEurekaLogを使用することができますか? EurekaLog documentationから

"デバッグ情報"(リンカページ、新しいデルファイ)/(旧デルファイ) "TD32デバッグ情報を含める"/"フルデバッグ情報"(C++ Builderの) - このオプション外部デバッガのデバッグ情報をTD32形式でアプリケーションに埋め込みます。 "実行"/"処理にアタッチ"を使用し、Delphiがデバッグ情報を見つけることができない場合、このオプションが必要な場合があります。また、EurekaLogはTD32情報を使用してC++ Builderで欠落した情報を完成させます。 「別のTDSファイルにデバッグ情報を配置する」オプションを有効にしない限り、このオプションを有効にすると(C++ Builderは情報を別の.tdsファイルに書き込みます)、Delphiアプリケーションのサイズを5〜10倍に増やすことができます。

そして

「マップファイル」 - このオプションを有効にすることで、あなたの実行ファイルと一緒に、別の.mapファイルを作成するために、Delphiのリンカを教えてください。マップファイルには、人間が読めるデバッグ情報の表現が含まれています。このオプションの設定を変えると、出力の抑制レベルが制御されます。通常、「オフ」または「詳細」とは異なる何かに変更する必要はありません。マップファイルは、さまざまなツールによってデバッグ情報の主要なソースとして使用されます。たとえば、EurekaLogは自動的にこのオプションをオンにし、マップファイルを使用して独自の形式でデバッグ情報を作成し、それをアプリケーションに注入します。そのため、このオプションを手動で変更する必要はほとんどありません。

これは、exeファイルへの完全なデバッグ情報を含めるのはオプションですが、マップファイルはexeファイルに挿入されることを意味します。

関連する問題