Estoy ejecutando un Linux basado en OpenEmbedded en una placa ARM, donde se está ejecutando mi aplicación. Solía ejecutar kernel 2.6.35, gdb 6.8 y gcc 4.3. Últimamente he actualizado el sistema a kernel 2.6.37, gdb 7.4 (también intenté 7.3) y gcc 4.6.gdb: No se pueden encontrar nuevos hilos: error genérico después de la actualización del sistema
Ahora, mi aplicación ya no se puede depurar (en la placa ARM), cada vez que intento ejecutarlo en gdb aparece el error "gdb: No se pueden encontrar nuevos hilos: error genérico". La aplicación hace uso de pthreads y enlaza con pthreads (readelf lista libpthread.so.0 como una dependencia). Las soluciones sugeridas que encontré hasta ahora recomiendan vincular a pthread que ya estoy haciendo. La otra recomendación que encontré fue usar LD_PRELOAD =/lib/libpthread.so.0 que no hace ninguna diferencia para mí.
La depuración de las versiones x86 de la aplicación funciona sin problemas.
EDITAR: Para responder a las preguntas formuladas en la primera respuesta, estoy usando gdb en el destino (ARM), es decir, no cross-gdb. Tampoco he eliminado libpthread.so.0 (/lib/libpthread-2.9.so: ELF objeto compartido LSF de 32 bits, ARM, versión 1 (SYSV), vinculado dinámicamente (utiliza bibliotecas compartidas), para GNU/Linux 2.6. 16, no despojado). glibc se mantuvo en la versión 2.9 y la actualización involucrado recompilar la imagen Linux toda
Edit2: Extracción/lib/libthread-db * permite la depuración (con las consiguientes advertencias y obviamente algunas características no funcionarán)
Edit3: Usando conjunto de depuración libthread db-1 me sale:
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
¿Tiene un libthread-db coincidente? –
@Guy: He recompilado toda la imagen y esto debería coincidir. De lo contrario, ¿cómo puedo verificar si coincide? – dseifert