Ich glaube (korrigiere mich, wenn ich falsch liege), dass beim Remote-Debuggen mit gdb
und gdbserver
die auf dem Ziel unter gdbserver
laufende Binärdatei nicht die Debug-Informationen in der Binärdatei benötigt Host, der gdb
ausführt, tut dies.
Unsere binäre Anwendung mit Debugsymbolen ist etwa 112 MB (!). Wenn ich strip starte, ist die Binärzahl nur 6,7 MB groß, was viel schneller zu unserem Ziel führen würde.
Ist es möglich, dass Qt Creator die Binärdatei entkoppelt, bevor sie bereitgestellt wird? Können wir noch debuggen?
Um Symbole zu entfernen, kann Qt Creator einen abschließenden Build-Schritt nach qmake und make ausführen, der den 'strip' -Befehl für die Binärdatei in Ihrem App-Bundle aufruft. Zum Beispiel: -
%Vor%Um zu debuggen, benötigen Sie ein separates .dsym Datei , die während des Builds generiert werden soll und die Symbole enthält. Wenn sich diese auf dem Host befindet, sollte der Debugger dies automatisch übernehmen; tut es mit lldb, obwohl mit gdb, müssen Sie möglicherweise manuell laden Sie die Symboldatei.
Wie kann ich diesen zusätzlichen Build-Schritt aktivieren?
Wählen Sie Projekte in der rechten Symbolleiste aus
Stellen Sie sicher, dass Sie sich auf der Registerkarte Erstellen und Ausführen befinden (GraphicsScene ist nur der Name des Projekts)
Unter Build Steps sehen Sie zwei Schritte, qMake
und Make
. Wählen Sie Build-Schritt hinzufügen für einen benutzerdefinierten Prozessschritt
Füllen Sie die relevanten Felder aus, die Sie möglicherweise für die Pfade korrigieren müssen, anstatt nur diese zu kopieren:
Wenn der Build abgeschlossen ist, wird der Befehl strip ausgeführt. Wenn Sie Fehler haben, liegt wahrscheinlich ein Problem mit dem Pfad zum Befehl strip oder dem Pfad zur ausführbaren Datei Ihres App-Bundles vor.
Wenn Sie den vollständigen Pfad zum Entfernen benötigen, befindet er sich in / usr / bin / strip.
Was die Symboldatei betrifft, so glaube ich, dass Sie den Befehl addsymbolfile
mit dem Argument für den Pfad zur dsym-Datei verwenden können. Allerdings ist gdb inzwischen veraltet und Sie sollten jetzt wirklich lldb verwenden, das die dsym-Datei automatisch findet, sobald sie von Spotlight indiziert wurde.
Sie können die Debug-Symbole wie folgt entfernen:
Fügen Sie Ihrer make-Datei eine Zeile hinzu, damit werden alle Debug-Symbole entfernt:
cd $ (MY_BINARY_INSTALL_PATH); strip --strip-debug $ (MY_BINARY_INSTALL_PATH) / bin / meinbinary -o $ (MY_BINARY_INSTALL_PATH) / bin / mybinary
Wenn Sie alle Symbole daraus entfernen möchten, könnten Sie etwas wie:
verwendencd $ (MY_BINARY_INSTALL_PATH); strip --strip-all $ (MY_BINARY_INSTALL_PATH) / bin / meinbinary -o $ (MY_BINARY_INSTALL_PATH) / bin / mybinary
Durch das Entfernen aller Symbole wird die Größe der Binärdatei erheblich reduziert