2015-08-01 37 views
5

Podczas debugowania aplikacji Qt 5, czasami nie interesuję się wewnętrznymi Qt 5, ale strukturą samej aplikacji. Dlatego nie muszę ładować wszystkich symboli debugowania bibliotek Qt 5, ponieważ ładowanie trwa kilka sekund.Jak uniemożliwić GDB załadowanie symbolu debugowania dla (dużej) biblioteki?

Czy można uniemożliwić GDB ładowanie symboli dla tych bibliotek Qt 5, zachowując symbole debugowania dla mojej aplikacji?

+3

Może to strona: https://developer.mozilla.org/en-US/docs/Using_gdb_on_wimpy_computers może się przydać. –

Odpowiedz

7

Czy można zapobiec ładowaniu symboli dla bibliotek Qt 5 przez GDB, zachowując symbole debugowania dla mojej aplikacji?

Tak.

Jako komentarz Richarda Critten wspomina, ustawienie auto-solib-add do 0 uniemożliwi ładowanie symbole dla wszystkich współdzielonych bibliotek, a następnie można dodać pliki ręcznie za pomocą polecenia z sharedlibrary (który akceptuje regex). Jeśli to wyrażenie zostanie pominięte, wszystkie załadowane biblioteki zostaną załadowane.

To jednak zapobiegnie automatycznemu ładowaniu symboli wszystkich (nie tylko symboli debugowania), a także zapobiegnie automatycznemu ładowaniu symboli dla bibliotek systemowych, które często są wymagane do rozwinięcia stosu.

Lepszym rozwiązaniem może być zapisanie kopii bibliotek Qt5 z pełnymi danymi debugowania, np. ~/Qt5-debug/, a następnie uruchom strip -g w oryginalnych bibliotekach. W ten sposób otrzymasz symboliczne informacje dla wszystkich bibliotek, a w rzadkich przypadkach, kiedy rzeczywiście potrzebujesz pełnej informacji debugowania dla Qt5, możesz to zrobić, używając GDB file ~/Qt5-debug/libQt5Core.so.5.2 lub podobnych poleceń.

Rozdział GDB Files z podręcznika GDB ma więcej dokumentację pomocą takich osobnych symboli debugowania.

+0

Dzięki gumowej kaczce! Wkrótce po zamieszczeniu tego pytania znalazłem odpowiednie sekcje w podręczniku GDB, mam nadzieję, że nie masz nic przeciwko dodaniu ich :-) – Lekensteyn

+1

Wielkie dzięki !!! Rozpoczęcie debugowania aplikacji Qt na Raspberry zajmuje naprawdę dużo czasu. Dzięki tej opcji uruchomienie gdb następuje natychmiast. – kaegoorn48

+0

Możesz również dodać to dokładne polecenie do ~/.gdbinit, aby było trwałe. – sdd