2016-02-17 7 views
8

Wierzę (popraw mnie, jeśli się mylę), że podczas zdalnego debugowania z gdb i gdbserver, binarny uruchomiony na celu pod gdbserver nie potrzebuje informacji debugowania w pliku binarnym, ale host, działający pod numerem gdb, robi to.Wbudowane debugowanie Qt 5.x - wdrażanie usuniętych plików binarnych?

Nasza aplikacja binarna z symbolami debugowania ma około 112 megabajtów (!). Jeśli uruchamiam strip, plik binarny ma tylko 6,7 MB, co znacznie szybciej byłoby zastosować do naszego celu.

Czy można zainstalować program Qt Creator jako plik binarny przed wdrożeniem? Czy nadal będziemy mogli debugować?

Odpowiedz

0

Aby usunąć symbole, możesz zlecić Qt Creator wykonanie końcowego kroku po qmake i make, który wywołuje polecenie "strip" w pliku binarnym w pakiecie aplikacji. Na przykład: -

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

W celu debugowania, że ​​ty potrzebujesz separate .dsym file być generowane w czasie kompilacji, która zawiera symbole. Jeśli znajduje się on na hoście, debugger powinien automatycznie odebrać to; robi to z lldb, ale z gdb, możesz potrzebować ręcznie załadować plik symboli.

jak włączyć ten dodatkowy krok gromadzeniu

wyboru projektów z paska narzędziowego po prawej stronie

Menu bar

zapewnić sobie na zbudowanie i zakładce Run (GraphicsScene jest tylko nazwa projektu)

tabs

Poniżej Zbuduj kroki, zobaczysz dwa kroki, qMake i Make. Wybierz dodać kompilacji krok po kroku procesu zwyczaj

Build Steps

wypełnienie odpowiednich pól może trzeba skorygować ścieżki, zamiast po prostu skopiować te:

Enter details

Kiedy kompilacja zakończyło się, polecenie paska uruchomi się. Jeśli masz jakieś błędy, prawdopodobnie problem dotyczy ścieżki do polecenia strip lub ścieżki do pliku wykonywalnego pakietu aplikacji.

Należy pamiętać, że jeśli potrzebna jest pełna ścieżka do usunięcia, znajduje się ona w katalogu/usr/bin/strip.

Jeśli chodzi o plik symboli, to uważam, że można użyć polecenia addsymbolfile z argumentem do ścieżki do pliku dsym. Jednak gdb jest już nieaktualne i powinieneś naprawdę używać lldb teraz, który automatycznie znajduje plik dsym po jego indeksowaniu przez Spotlight.

+0

używam Qt Creator z mój gdb z narzędziami, nic nadzwyczajnego. Projekt jest zbudowany z Kreatora za pomocą qmake. Czy możesz nieco rozszerzyć sposób włączania dodatkowego etapu kompilacji i jak ręcznie ładować te symbole, o czym wspomniałeś? – Steve

+0

Zaktualizowałem odpowiedź w odpowiedzi na Twoje pytanie. – TheDarkKnight

+0

Czy ten niestandardowy proces jest krokiem lokalnym na komputerze programisty, czy jest on zapisany gdzieś w pliku .pro? Chciałbym móc to wdrożyć i sprawić, że będzie "po prostu działać" dla innych programistów w moim zespole. Dam ci szansę przed końcem tygodnia. – Steve

0

Można rozebrać symbole debugowania tak:

Dodaj linię do pliku make, to usunie wszystkie symbole debugowania z niego:

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

Jeśli chcesz usunąć wszystkie symbole z niego można użyć czegoś takiego:

cd $ (MY_BINARY_INSTALL_PATH); Listwa --strip wszystko $ (MY_BINARY_INSTALL_PATH)/bin/mybinary -o $ (MY_BINARY_INSTALL_PATH)/bin/mybinary

odizolowania wszystkie symbole pomogą zmniejszyć rozmiar pliku binarnego znacznie

Powiązane problemy