当前位置:  开发笔记 > IOS > 正文

如何查找OSX上的进程加载了哪个共享库?

如何解决《如何查找OSX上的进程加载了哪个共享库?》经验,为你挑选了1个好方法。

我试图编译并使用共享的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也许我使用了那些工具是错误的。

我如何找出崩溃的原因?



1> bdash..:

您可以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
$

推荐阅读
路人甲
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有