Frage Wie analysiert man die Dateigröße einer mit Delphi erstellten Exe?


Ich hätte gerne einen Bericht, der klar erklärt, warum eine mit Delphi erstellte Exe eine bestimmte Größe hat.

Zum Beispiel so etwas:

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

Ich möchte diese Art von Bericht haben, um zu verstehen, warum eine exe, die ich gerade gebaut habe, 120MB groß ist. Es verwendet viele Dateien aus einer anderen Anwendung, die beim Erstellen 90 MB groß ist. Ich habe nur zwei Einheiten hinzugefügt (und viele entfernt) und die Größe von 90 auf 120 MB geändert. Ich erwartete eine kleinere Größe (unter Berücksichtigung vieler entfernter Einheiten).

Gibt es ein Tool, das dies bereits tut oder gibt es eine Möglichkeit, dieses Problem von der IDE aus zu untersuchen?


5
2017-11-30 09:40


Ursprung


Antworten:


Ich hätte gerne einen Bericht, der klar erklärt, warum eine mit Delphi erstellte Exe eine bestimmte Größe hat.

Ville Krumlinde schrieb ein Tool, das die Einheitengrößen in einer EXE-Datei durch Parsing der vom Linker erstellten Map-Datei meldet: DelphiUnitSizes.

enter image description here

einstellen Project Options|Linking|Map File zu Publics oder Detailed und mache einen vollständigen Build der exe. Öffnen Sie die resultierende Map-Datei mit DelphiUnitSizes.

Ein anderes ähnliches Werkzeug ist MapFileStats von Eric Grange.


Kann ich EurekaLog ohne debuginfo benutzen?

Von EurekaLog-Dokumentation:

"Debug Information" (Linker Seite, neues Delphi) / "Include TD32 Debug Informationen" (altes Delphi) / "Vollständige Debug Informationen" (C ++ Builder) - diese Option bettet Debug Informationen für externe Debugger im TD32 Format in Ihre Anwendung ein. Sie benötigen diese Option möglicherweise, wenn Sie "Ausführen" / "An den Prozess anhängen" verwenden und Delphi keine Debug-Informationen finden kann. Außerdem verwendet EurekaLog TD32-Informationen, um fehlende Informationen in C ++ Builder zu vervollständigen. Beachten Sie, dass die Größe Ihrer Delphi-Anwendung durch Aktivierung dieser Option 5-10 Mal erhöht werden kann (C ++ Builder schreibt Informationen in eine separate .tds-Datei), sofern Sie nicht die Option "Debug-Informationen in separate TDS-Datei platzieren" aktivieren.

Und

"Map-Datei" - Wenn Sie diese Option aktivieren, weisen Sie den Delphi-Linker an, eine separate .map-Datei zusammen mit Ihrer ausführbaren Datei zu erstellen. Die Kartendatei enthält eine lesbare Darstellung der Debug-Informationen. Verschiedene Einstellungen für diese Option steuern die Detalisierungsebene der Ausgabe. In der Regel ist es nicht notwendig, sie in etwas zu ändern, das sich von "Aus" oder "Detailliert" unterscheidet. Die Map-Datei wird von verschiedenen Tools als primäre Quelle für Debug-Informationen verwendet. Zum Beispiel schaltet EurekaLog diese Option automatisch ein und erstellt mit map-file eine Debug-Information in seinem eigenen Format und fügt sie dann in die Anwendung ein. Aus diesem Grund müssen Sie diese Option nur selten manuell ändern.

Dies bedeutet, dass die Map-Datei in einer Weise in die exe-Datei injiziert wird, während das Einschließen vollständiger Debug-Informationen in die exe optional ist.


6
2017-11-30 14:51



Wenn es Ihnen nichts ausmacht, ein kleines Hex zu lesen, können Sie einstellen Kartendatei zu Segmente unter Projektoptionen - Delphi Compiler - Verknüpfung. Sie erhalten eine Textdatei mit dem Namen Yourexe.map, die eine Liste der enthaltenen Module und deren Längen enthält.

Dies ermöglicht eine grundlegende Analyse der Inhalte Ihrer exe. Allerdings wird es Ihre nächste Frage nicht beantworten, "Brauche ich wirklich all diese Sachen?" ...


0
2017-11-30 14:51