2016-02-17 20 views
8

Credo (correggimi se sbaglio) che quando esegue il debug remoto con gdb e gdbserver, il binario in esecuzione sul target con gdbserver non ha bisogno delle informazioni di debug nel file binario, ma l'host, che esegue gdb, esegue.Debug incorporato di Qt 5.x - distribuire il binario spogliato?

Il nostro file binario dell'applicazione con i simboli di debug è di circa 112 mega (!). Se eseguo strip, il file binario è solo di 6,7 meg, che sarebbe molto più veloce da implementare sul nostro target.

È possibile avere Qt Creator rimuovere il file binario prima di distribuirlo? Potremo ancora eseguire il debug?

risposta

0

Per rimuovere i simboli, è possibile fare in modo che Qt Creator esegua un passaggio finale dopo qmake e make, che chiama il comando "strip" sul file binario nel pacchetto di app. Ad esempio: -

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

Al fine di eseguire il debug, avresti bisogno di un separate .dsym file da generare durante la costruzione, che contiene i simboli. Se questo risiede sull'host, il debugger dovrebbe prelevarlo automaticamente; lo fa con lldb, anche se con gdb, potrebbe essere necessario caricare manualmente il file di simboli.

come abilitare che passaggio di generazione in più

selezionare i progetti dalla barra degli strumenti di destra

Menu bar

Assicurarsi siete sulla scheda Run Costruire e (GraphicsScene è solo il nome del progetto)

tabs

Sotto Fasi di creazione, verranno visualizzati due passaggi, qMake e Make. Selezionare aggiungere passaggio di generazione per una fase del processo personalizzato

Build Steps

Compilare i campi rilevanti potrebbe essere necessario per correggere i percorsi, piuttosto che copiare questi:

Enter details

Quando l'accumulo è finito, verrà eseguito il comando striscia. In caso di errori, è probabile che si sia verificato un problema con il percorso del comando strip o del percorso dell'eseguibile del bundle dell'app.

Si noti che se è necessario il percorso completo da rimuovere, risiede in/usr/bin/strip.

Per quanto riguarda il file di simboli, credo che sia possibile utilizzare il comando addsymbolfile con l'argomento del percorso del file dsym. Tuttavia, gdb è stato deprecato e ora dovresti davvero usare lldb, che trova automaticamente il file dsym, una volta che è stato indicizzato da Spotlight.

+0

sto usando QtCreator con gdb del mio toolchain, niente di speciale. Il progetto si basa su Creator usando qmake. Puoi ampliare un po 'come abilitare il passaggio di build aggiuntivo e come caricare manualmente quei simboli quando menzioni? – Steve

+0

Ho aggiornato la risposta in risposta alla tua domanda. – TheDarkKnight

+0

Il processo personalizzato esegue un passaggio locale nel computer dello sviluppatore oppure viene salvato da qualche parte in un file .pro? Mi piacerebbe essere in grado di implementarlo e farlo funzionare "solo per gli altri sviluppatori del mio team. Darò questo un colpo prima della fine della settimana. – Steve

0

È possibile togliere i simboli di debug in questo modo:

aggiungere una riga al vostro file di marca, questo rimuoverà tutti i simboli di debug da esso:

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

Se si desidera rimuovere tutti i simboli da esso si potrebbe usare qualcosa di simile:

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

Spogliarello tutti i simboli contribuirà a ridurre la dimensione del binario in modo significativo