2016-02-17 5 views
8

Ich glaube (korrigieren Sie mich, wenn ich falsch liege), dass bei Remote-Debugging mit gdb und gdbserver die Binär auf dem Ziel unter gdbserver nicht die Debug-Informationen in der Binärdatei ausgeführt, aber der Host, der gdb ausgeführt wird, tut.Qt 5.x eingebettetes Debugging - entpackte Binärdatei?

Unsere Anwendung binary mit Debugging-Symbolen ist etwa 112 MB (!). Wenn ich strip betreibe, ist die Binärzahl nur 6,7 MB groß, was viel schneller für unser Ziel wäre.

Ist es möglich, dass Qt Creator die Binärdatei entkoppelt, bevor sie bereitgestellt wird? Können wir noch debuggen?

Antwort

0

Um Symbole zu entfernen, kann Qt Creator einen letzten Build-Schritt nach qmake und make ausführen, der den Befehl 'strip' für die Binärdatei in Ihrem App-Bundle aufruft. Zum Beispiel: -

strip -u -r ./MyApplication/Contents/MacOS/MyApplication 

Um zu debuggen, müssten Sie ein separate .dsym file während des Build erzeugt werden, die 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 die Symboldatei.

wie diesen Schritt zusätzliche build

Wählen Sie Projekte aus der rechtsseitigen Werkzeugleiste

Menu bar

Stellen Sie sicher, Sie sind auf dem Aufbau und Betrieb von Registerkarte aktivieren (GraphicsScene ist nur der Name des Projekts)

tabs

Unter Build Schritte, sehen Sie zwei Schritte, qMake und Make. Wählen Sie hinzufügen Build-Schritt für einen kundenspezifischen Prozessschritt

Build Steps

Füllen Sie die relevanten Felder, die Sie benötigen für die Wege zu korrigieren, anstatt einfach kopieren diese:

Enter details

Wenn der Build fertig ist, wird der strip-Befehl 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.

Beachten Sie, dass wenn Sie den vollständigen Pfad zum Entfernen benötigen, er sich in/usr/bin/strip befindet.

Wie für die Symboldatei glaube ich, dass Sie den addsymbolfile Befehl mit dem Argument für den Pfad zu der 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.

+0

Ich verwende QtCreator mit Meine Toolchain ist gdb, nichts Besonderes. Das Projekt wird von Creator mithilfe von qmake erstellt. Kannst du ein wenig darüber hinausgehen, wie ich diesen zusätzlichen Build-Schritt aktivieren kann und wie ich diese Symbole manuell laden würde, wie du es erwähnst? – Steve

+0

Ich habe die Antwort als Antwort auf Ihre Frage aktualisiert. – TheDarkKnight

+0

Ist dieser benutzerdefinierte Prozessschritt lokal für den Entwicklercomputer oder wird er irgendwo in einer .pro-Datei gespeichert? Ich würde das gern umsetzen und es "einfach funktionieren lassen" für die anderen Entwickler in meinem Team. Ich werde das vor Ende der Woche versuchen. – Steve

0

Sie können die Debug-Symbole wie diese Streifen:

eine Zeile in die Make-Datei hinzufügen, werden dadurch alle Debug-Symbole aus ihr entfernen:

cd $ (MY_BINARY_INSTALL_PATH); Streifen --strip-debug $ (MY_BINARY_INSTALL_PATH)/bin/mybinary -o $ (MY_BINARY_INSTALL_PATH)/bin/mybinary

Wenn Sie alle Symbole entfernen möchten aus es Sie so etwas wie verwenden:

cd $ (MY_BINARY_INSTALL_PATH); Streifen --strip-all $ (MY_BINARY_INSTALL_PATH)/bin/mybinary -o $ (MY_BINARY_INSTALL_PATH)/bin/mybinary

alle Symbole Stripping wird die Größe des binären reduzieren deutlich