如何查找 OSX 上的进程加载了哪个共享库?
How to find which shared library is loaded by a process on OSX?
我正在尝试编译和使用共享 C 库作为 python 模块,我观察到根据 DYLD_LIBRARY_PATH
我的代码是否正常工作或崩溃并显示一条神秘的错误消息。
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
我试图手动检查哪些库在 /usr/lib
和 /usr/local/lib
以及 /opt/local/lib
之间是通用的,但我一直无法找到崩溃的原因。找出问题原因的一种方法是找出这两个进程使用了哪些 dylib
文件?我无法使用 opensnoop
或 dtruss
来解决这个问题,但也许我使用这些工具有误。
如何找出崩溃的原因?
您可以在环境中设置 DYLD_PRINT_LIBRARIES=YES
以 dyld
打印它加载到进程中的每个动态库:
$ 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
$
我正在尝试编译和使用共享 C 库作为 python 模块,我观察到根据 DYLD_LIBRARY_PATH
我的代码是否正常工作或崩溃并显示一条神秘的错误消息。
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
我试图手动检查哪些库在 /usr/lib
和 /usr/local/lib
以及 /opt/local/lib
之间是通用的,但我一直无法找到崩溃的原因。找出问题原因的一种方法是找出这两个进程使用了哪些 dylib
文件?我无法使用 opensnoop
或 dtruss
来解决这个问题,但也许我使用这些工具有误。
如何找出崩溃的原因?
您可以在环境中设置 DYLD_PRINT_LIBRARIES=YES
以 dyld
打印它加载到进程中的每个动态库:
$ 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
$