Have an amazing solution built in RAD Studio? Let us know. Looking for discounts? Visit our Special Offers page!
BeiträgeC++IDERAD Studio

Hilfe für den Linker: Aufteilen der DWARF- und Linker-Speichernutzung in C ++ Builder 10.4.2

close up lumberjack chopping wood with ax sawdust fly to sides harvesting wood

Der Linker ist ein Kernbestandteil der C ++ Builder-Toolchain – schließlich ist es der Teil, der die Ausgabe des Compilers sammelt und Ihre endgültige Binärdatei erstellt, sodass es schwierig ist, seine Bedeutung zu unterschätzen! – und weil es die gesamte Anwendung auf einmal zusammenbringt, kann es viel Speicher verbrauchen. C ++ Builder 10.4.2 ist nicht die erste Version, in der wir Linker-Verbesserungen eingeführt haben: Den Linker auf eine große Adresse aufmerksam machen , den Linker auf die heutigen typischen Anwendungen abstimmen und nützliche Flags dokumentieren, um das Linker-Verhalten zu optimieren, wenn Sie feststellen, dass der Linker Probleme hat Ihre Bewerbung. (Ganz zu schweigen vom Hinzufügen nützlicher Funktionen wie dem Erkennen von Mischungen aus klassischen und klirrenden Objekten Wenn Sie eine Verknüpfung erstellen, können Sie ein unsichtbares Problem feststellen, das sich auf die Laufzeitstabilität Ihrer App auswirkt. Verwenden Sie diese Option, um sicherzustellen, dass Ihre App keinen häufigen Fehler enthält und stabil ist.)

In C ++ Builder 10.4.2 haben wir den Win64-Linker Split DWARF erheblich verbessert, den wir aus der Unix-Welt für Windows bereitstellen.

Warum die ungeraden Namen?

Objektdateien – die kompilierte Form jeder Kompilierungseinheit, dh jeder CPP-Datei – werden in verschiedenen Objektformaten gespeichert. Unter Win64 verwendet C ++ Builder 64-Bit-ELF, ein Format, das normalerweise unter Linux verwendet wird. Es steht für Executable and Linkable Format, aber wir vermuten, dass es seinen wahren Ursprung in Fans von Tolkien hat – weil das zusätzliche Debug-Informationsformat zum Speichern von Debug-Informationen für jedes Objekt DWARF heißt. Dies ist definitiv ein Wortspiel (siehe Seite 2 dieses PDFs .)

Split DWARF ist nicht das Ergebnis eines D & D-Tavernenkampfes oder gar eines Calvino-Romans . Tatsächlich ist dies eine Möglichkeit, die Debug-Informationen aufzuteilen, damit der Linker nicht damit umgehen muss.

Das ist das Geheimnis. Wie kann der Speicher, den der Linker beim Verknüpfen Ihrer App benötigt, am besten reduziert werden?

Es ist fast lächerlich einfach. Geben Sie es weniger zu verknüpfen.

Debug-Informationen aufteilen

Wenn Sie Ihre Anwendung im Debug-Modus oder mit Einheiten mit aktivierten Debug-Informationen erstellen, sind die Debug-Informationen in der Regel zusammen mit dem kompilierten Code in der Objektdatei enthalten. Der Linker liest beide und erstellt die endgültige Binärdatei – Ihre EXE oder DLL – und diese enthält auch sowohl kompilierten Code als auch Debug-Informationen. Dies ist der Hauptgrund, warum eine Debug-EXE-Datei so viel größer ist als eine normale App im Release-Modus.

Split DWARF verarbeitet die Objektdatei und teilt die Debug-Informationen in eine eigene Datei auf, die nebeneinander liegt, eine Dwo-Datei. In der ursprünglichen Objektdatei verbleibt ein winziger Stub, den der Debugger lesen kann, um zu erfahren, wo sich die Debuginformationen befinden.

Um es zu aktivieren, gehen Sie in Ihren Projektoptionen zu Building> C ++ Compiler> Debugging und suchen Sie die Option „Split DWARF verwenden“.

10 4 2 split dwarf options cropped

Mach es an.

Erweitern Sie die Option (klicken Sie auf> Caret) und wählen Sie einen absoluten Pfad aus, in den die Debug-Informationen verschoben werden sollen. Erstellen Sie also einen Pfad, der kein relativer Pfad ist, z. B. beginnt er mit c: oder d:. Dies ist erforderlich, um sicherzustellen, dass der Debugger die Debug-Informationen finden kann.

Und das ist es. Weitere Informationen finden Sie hier in unserer Dokumentation . Sie können den großartigen neuen Win64-Debugger verwenden (mit großartigen Funktionen wie der Überprüfung von STL-Typen – seit diesem Blog wurde mehr hinzugefügt), während Sie Ihrem Linker viel weniger Zeit zum Verknüpfen in C ++ Builder 10.4.2 geben!


Reduce development time and get to market faster with RAD Studio, Delphi, or C++Builder.
Design. Code. Compile. Deploy.
Start Free Trial   Upgrade Today

   Free Delphi Community Edition   Free C++Builder Community Edition

Kommentieren

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.

IN THE ARTICLES