2012-07-20 14 views
13

estoy depurando una aplicación multi-hilo con gdb, pero cuando inicio el programa en GDB me sale la advertencia:Incapaz de aplicación multiproceso de depuración con GDB

advertencia: No se puede encontrar libthread_db juego de inferiores biblioteca de subprocesos, la depuración de subprocesos no estará disponible.

Aún puedo depurar, pero no puedo depurar nada más que el hilo principal. He leído foros que sugieren instalar los paquetes libthread-db1 y glibc-dbg, pero esto no me soluciona el problema.

En mi máquina tengo los 3 archivos /lib/libthread_db.so.1, /lib/.debug/libthread_db-1.0.so y /lib/libthread_db-1.0.so. Traté de crear enlaces simbólicos en /lib con el nombre libthread_db.so, una vez apuntando al archivo /lib/libthread_db.so.1, y otra vez apuntando al archivo /lib/libthread_db-1.0.so, y también creé el enlace simbólico /lib/.debug/libthread_db.so apuntando a /lib/.debug/libthread_db-1.0.so, todo sin suerte.

En GDB He intentado fijar libthread-db-search-path-/lib (con el enlace simbólico, una vez establecido en libthread_db.so.1, y una vez a libthread_db-1.0.so, y también puse a /lib/.debug.

¿Alguna sugerencia? Estoy usando v2.6.39 Angstrom Linux para el BeagleBoard-XM

+0

Tenga en cuenta que comencé con un sistema de archivos raíz de un núcleo 2.6.32 (Angstrom-Beagleboard-demo-image-glibc-ipk-2011.1-beagleboard.rootfs.tar.bz2), y copié el origen de Linux en/usr/src, y compilado de forma cruzada un nuevo kernel basado en 2.6.39. Esta es probablemente la razón de que la versión no coincida. Tengo los archivos de objeto compartido threading del compilador cruzado, e intenté reemplazar los archivos .so existentes por los del compilador cruzado, pero causó que se bloqueara. ¿Algunas ideas? – Samuel

+1

Hola, actualmente estoy teniendo exactamente el mismo problema en angstrom corriendo en un beaglebone. ¿Alguna vez descubrió la solución? –

+1

Además, asegúrese de que su versión de libpthread no esté '' sin tiras ' –

Respuesta

8

advertencia:. No es posible encontrar libthread_db juego librería de hilos de inferior

Esto significa º en su /lib/libthread_db.so.1 no coincide con su /lib/libpthread.so.0. Tal discrepancia podría ser el resultado de la instalación de diferentes versiones de los paquetes libc y libthread_db, o la actualización de uno u otro fuera del sistema de gestión de paquetes. También podría ser un error en sus paquetes (es decir, es posible que no se hayan creado correctamente).

Usted debe ignorar /lib/.debug/* - es decir, no la biblioteca que busca.

5

estás en lo correcto al tratar de utilizar

set libthread-db-search-path [path] 

Sin embargo, parece que todavía no han señalado que en una versión de libthread_db que es compatible con la biblioteca pthreads que está utilizando.

En primer lugar, comprobar qué pThread biblioteca que está vinculado a la utilización de LDD:

ldd your_executable 

continuación, asegúrese de puntos del-db-search-path libthread a un lugar que tiene una versión compatible de libthread_db con lo libpthread estas obteniendo Podría ser que su ruta de enlace dinámica sea obtener una biblioteca pthread diferente a la esperada.

Cuestiones relacionadas