打印App中加载的库
之前分享过配置环境变量 DYLD_PRINT_STATISTICS
,来在控制台打印出程序启动过程中各个阶段所消耗的时间。今天再分享两个环境变量:DYLD_PRINT_LIBRARIES
和 DYLD_PRINT_LIBRARIES_POST_LAUNCH
,这两个变量用于打印 dyld
加载的库,如下代码所示:
dyld: loaded: /var/containers/Bundle/Application/717397DD-AE3E-457F-A446-609883FF865C/ChangeIcon.app/ChangeIcon
dyld: loaded: /Developer/usr/lib/libBacktraceRecording.dylib
dyld: loaded: /Developer/usr/lib/libMainThreadChecker.dylib
dyld: loaded: /Developer/Library/PrivateFrameworks/DTDDISupport.framework/libViewDebuggerSupport.dylib
dyld: loaded: /System/Library/Frameworks/Foundation.framework/Foundation
dyld: loaded: /usr/lib/libobjc.A.dylib
dyld: loaded: /usr/lib/libSystem.B.dylib
dyld: loaded: /System/Library/Frameworks/CoreFoundation.framework/CoreFoundation
dyld: loaded: /System/Library/Frameworks/UIKit.framework/UIKit
dyld: loaded: /usr/lib/libarchive.2.dylib
dyld: loaded: /usr/lib/libicucore.A.dylib
dyld: loaded: /usr/lib/libxml2.2.dylib
dyld: loaded: /usr/lib/libz.1.dylib
dyld: loaded: /System/Library/Frameworks/CFNetwork.framework/CFNetwork
dyld: loaded: /System/Library/Frameworks/SystemConfiguration.framework/SystemConfiguration
......
两者的区别在于 DYLD_PRINT_LIBRARIES
会打印出所有被加载的库,而 DYLD_PRINT_LIBRARIES_POST_LAUNCH
打印的是通过 dlopen
调用返回的库,包括动态库的依赖库,主要发生在 main
函数运行之后。