2012-07-20 27 views
13

jestem debugowania wielowątkowych aplikacji z gdb, ale kiedy uruchomić program w gdb pojawia się ostrzeżenie:Nie można Application Debug wielowątkowy z gdb

ostrzeżenie: Nie można znaleźć libthread_db dopasowanie gorsze-tych biblioteka wątków, debugowanie wątków nie będzie dostępne.

Mogę nadal debugować, ale nie mogę debugować niczego innego niż główny wątek. Przeczytałem fora, które sugerują instalację pakietów libthread-db1 i glibc-dbg, ale to nie rozwiązuje problemu.

Na moim komputerze mam 3 pliki /lib/libthread_db.so.1, /lib/.debug/libthread_db-1.0.so i /lib/libthread_db-1.0.so. Próbowałem tworzyć dowiązania symboliczne w /lib o nazwie libthread_db.so, jeden raz wskazując na plik /lib/libthread_db.so.1, i innym razem wskazując na plik /lib/libthread_db-1.0.so, a także utworzyłem symboliczne łącze /lib/.debug/libthread_db.so wskazujące na /lib/.debug/libthread_db-1.0.so, wszystko bez powodzenia.

W gdb Próbowałem ustawienie libthread-db-search-path do /lib (z dowiązania symbolicznego raz ustawiony libthread_db.so.1, a raz do libthread_db-1.0.so, a także zestaw do /lib/.debug.

sugestie? Używam Angstrem Linux v2.6.39 dla BeagleBoard-xm

+0

Pamiętaj, że zacząłem od głównego systemu plików z jądra 2.6.32 (Angstrom-Beagleboard-demo-image-glibc-ipk-2011.1-beagleboard.rootfs.tar.bz2) i skopiowałem źródło linuxa do/usr/src, i skompilowane krzyżowo nowe jądro w wersji 2.6.39. Jest to prawdopodobnie przyczyna niezgodności wersji. Mam pliki współdzielonych obiektów wątku z kompilatora krzyżowego i próbowałem zastąpić istniejące pliki .so plikami z kompilatora krzyżowego, ale spowodowało awarię make. Jakieś pomysły? – Samuel

+1

Witam Obecnie mam dokładnie ten sam problem na angstromie działającym na beaglebone. Czy kiedykolwiek wymyśliłeś rozwiązanie? –

+1

Upewnij się także, że twoja wersja libpthread nie jest "pozbawiona" –

Odpowiedz

8

ostrzeżenie. Nie można znaleźć libthread_db dopasowanie gorszy biblioteki wątek

oznacza to th na twoim /lib/libthread_db.so.1 nie pasuje do twojego /lib/libpthread.so.0. Takie niedopasowanie może być wynikiem instalacji różnych wersji pakietów libc i libthread_db lub aktualizacji jednego lub drugiego poza systemem zarządzania pakietami. Może to być również błąd w twoich pakietach (tzn. Mogą nie być poprawnie zbudowane).

Należy ignorować/lib/.debug/* - czyli nie biblioteka szukasz.

5

Masz rację, próbując wykorzystać

set libthread-db-search-path [path] 

jednak wydaje się wciąż nie mają wycelował w wersji libthread_db, który jest kompatybilny z biblioteką Pthreads używasz.

Po pierwsze, sprawdź, które Pthread biblioteka jesteś związany z wykorzystaniem ldd:

ldd your_executable 

następnie upewnij punktach libthread-db-search-path do lokalizacji, która ma kompatybilną wersję libthread_db z jakiegokolwiek libpthread dostajesz. Być może dynamiczna ścieżka linkera pobiera inną bibliotekę pthread, niż się spodziewasz.

Powiązane problemy