traves subprocesos llamar controles como checkforillegalcrossthreadcalls multithreading debugging gdb beagleboard angstrom-linux

multithreading - subprocesos - checkforillegalcrossthreadcalls



No se puede depurar la aplicación de subprocesos múltiples con gdb (2)

advertencia: no se puede encontrar libthread_db coincidiendo con la biblioteca de hilos de inferior

Esto significa que 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 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).

Debe ignorar /lib/.debug/* - esa no es la biblioteca que está buscando.

Estoy depurando una aplicación multiproceso con gdb, pero cuando inicio el programa en gdb aparece la advertencia:

advertencia: no se puede encontrar libthread_db haciendo coincidir la biblioteca de hilos de inferior, la depuración de subprocesos no estará disponible.

Todavía 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 . Intenté 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 intenté establecer libthread-db-search-path en /lib (con el enlace simbólico una vez establecido en libthread_db.so.1 , y una vez en libthread_db-1.0.so , y también en /lib/.debug .

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


Estás en lo correcto al tratar de usar

set libthread-db-search-path [path]

sin embargo, parece que todavía no lo ha apuntado a una versión de libthread_db que sea compatible con la biblioteca pthreads que está utilizando.

Primero, verifique a qué biblioteca pthread está vinculado usando ldd:

ldd your_executable

luego, asegúrese de que libthread-db-search-path apunta a una ubicación que tiene una versión compatible de libthread_db con cualquier libpthread que obtenga. Podría ser que su ruta de enlace dinámica sea obtener una biblioteca pthread diferente a la esperada.