6 votos

Cómo encontrar qué biblioteca compartida que es cargado por un proceso en OSX?

Estoy tratando de compilar y uso compartido de la biblioteca de C como un módulo de python y estoy observando que, dependiendo de la DYLD_LIBRARY_PATH mi código funciona o se bloquea con un críptico mensaje de error.

Jul 24 02:44:44 master 
$ DYLD_LIBRARY_PATH=/opt/local/lib  python -c 'import opengm' 
OKAY

Jul 24 02:45:41 master 
$ DYLD_LIBRARY_PATH= python -c 'import opengm' 
python(86214,0x7fff70ccdcc0) malloc: *** error for object 0x7fff70177500: pointer being freed was not allocated
*** set a breakpoint in malloc_error_break to debug
Abort trap

He tratado de revisar que las bibliotecas son comunes entre /usr/lib y /usr/local/lib y /opt/local/lib , pero no he sido capaz de encontrar la causa del accidente. Una forma de averiguar la causa del problema será que averiguar dylib archivos de hacer los dos procesos de uso? Yo no era capaz de entender esto usando opensnoop o dtruss , pero tal vez yo estaba usando las herramientas equivocadas.

¿Cómo puedo averiguar la causa de este accidente?

DESCARGO de responsabilidad: he publicado esta misma pregunta en MODO de 2 días, donde no recibió ninguna respuesta y sólo 8 puntos de vista.

9voto

Maher4Ever Puntos 176

Puede establecer DYLD_PRINT_LIBRARIES=YES en el medio ambiente para tener dyld de impresión de cada biblioteca dinámica que se carga en el proceso:

$ DYLD_PRINT_LIBRARIES=YES /usr/bin/true 
dyld: loaded: /usr/bin/true
dyld: loaded: /usr/lib/libSystem.B.dylib
[ ... snip ... ]
dyld: loaded: /usr/lib/libc++.1.dylib
dyld: loaded: /usr/lib/libDiagnosticMessagesClient.dylib
$

3voto

Christopher Puntos 131

Un programa que puede mostrar que dylib archivos se han utilizado para ejecutar un programa es otool.

otool -L /path/to/program

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X