¿Cómo puedo rastrear la carga de la biblioteca?


16

Tengo un programa que depende de la biblioteca que está vinculada a libboost 1.67, que está instalada en el sistema. Cuando lo ejecuto, tengo un error que libboost_system.so.1.58no existe. LD_PRELOADy no LD_LIBRARY_PATHestán establecidos

lddtreela ejecución no muestra esta biblioteca como dependencia pero lddsí.

¿Cómo puedo rastrear desde donde se requiere la biblioteca?

Respuestas:


16

Si está en un sistema GNU, intente ejecutar su aplicación con:

LD_DEBUG=libs your-application

Ver LD_DEBUG=helppara más opciones o man ld.so.


cuando intento LD_DEBUG = libs python3.6 en tcsh obtengo el comando LD_DEBUG no encontrado. ¿Cuál es la alternativa tcsh?
gansub

1
@gansub prefijo el comando con enven tcsh
Stéphane Chazelas

6

Si el programa está cargando libboost_system manualmente usando dlopen (), puede encontrar dónde está haciendo eso usando ltrace para ver si está llamando a dlopen (), y tal vez gdb para establecer un punto de interrupción en las llamadas a dlopen () y luego generando un seguimiento de la pila. (Ver también latrace .)

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.