gdb: Не удается найти новые потоки: общая ошибка после обновления системы

Я использую Linux на основе OpenEmbedded на плате ARM, где выполняется мое приложение. Раньше я запускал ядро 2.6.35, gdb 6.8 и gcc 4.3. Недавно я обновил систему до ядра 2.6.37, gdb 7.4 (также пробовал 7.3) и gcc 4.6.

Теперь мое приложение больше не может быть отлажено (на плате ARM), каждый раз, когда я пытаюсь запустить его в gdb, я получаю ошибку «gdb: Не удается найти новые потоки: общая ошибка». Приложение использует pthreads и ссылается на pthreads (readelf перечисляет libpthread.so.0 в качестве зависимости). Предлагаемые решения, которые я нашел до сих пор, рекомендуют ссылаться на pthread, что я уже делаю. Другой рекомендацией, которую я нашел, было использовать LD_PRELOAD=/lib/libpthread.so.0, что не имеет для меня никакого значения.

Отладка x86-сборок приложения работает без проблем.

ПРАВКА: Чтобы ответить на вопросы, поставленные в первом ответе, я использую gdb on the target (ARM), т.е. без кросс-gdb. Я также не удалил libpthread.so.0 (/lib/libpthread-2.9.so: ELF 32-битный общий объект LSB, ARM, версия 1 (SYSV), динамически связанный (использует общие библиотеки), для GNU/Linux 2.6.16, не удаленный). glibc остался в версии 2.9, и обновление включало перекомпиляцию всего образа linux

EDIT2: Удаление /lib/libthread-db* позволяет выполнять отладку (с последующими предупреждениями и, очевидно, некоторые функции не будут работать)

EDIT3: Используя set debug libthread-db 1 я получаю:

Starting program: /home/root/app
Trying host libthread_db library: libthread_db.so.1.
Host libthread_db.so.1 resolved to: /lib/libthread_db.so.1.
td_ta_new failed: application not linked with libthread
thread_db_load_search returning 0
Trying host libthread_db library: libthread_db.so.1.
Host libthread_db.so.1 resolved to: /lib/libthread_db.so.1.
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/libthread_db.so.1".
warning: Unable to set global thread event mask: generic error
Warning: find_new_threads_once: find_new_threads_callback: cannot get thread info: generic error
Found 0 new threads in iteration 0.
Warning: find_new_threads_once: find_new_threads_callback: cannot get thread info: generic error
Found 0 new threads in iteration 1.
Warning: find_new_threads_once: find_new_threads_callback: cannot get thread info: generic error
Found 0 new threads in iteration 2.
Warning: find_new_threads_once: find_new_threads_callback: cannot get thread info: generic error
Found 0 new threads in iteration 3.
thread_db_load_search returning 1
Warning: find_new_threads_once: find_new_threads_callback: cannot get thread info: generic error
Found 0 new threads in iteration 0.
Cannot find new threads: generic error
(gdb) Write failed: Broken pipe
5
задан dseifert 4 June 2012 в 13:34
поделиться