XCode启动参数和环境变量

前言最近在写《iOS代码调试》系列的博客,估计会有十篇以上的内容,等到都写完了会在Github以一个仓库的形式开源出来,欢迎关注我的Github:LeoMobileDeveloper这一部分介绍XCode中Argument/Options模块,通过这两个模块,我们可以在启动App的时候传递一些额外的参数进去,覆盖系统的默认值,从而实现特定场景的调试...Core Data当你使用Core Data作为本地持久化存储的技术栈时,你会发现很难对程序进行跟踪,这时候可以使用启动参数log等级分为1到3,越高越详细-com.apple.CoreData.SQLDebug 3Log如下CoreData: sql: pragma cache_size=1000CoreData: sql: SELECT ...还有Core Data迁移调试-com.apple.CoreData.MigrationDebugEnvironment Variable对比启动参数,环境变量的作用域更广一些,它更像是App的全局变量,在应用内任何地方都可以访问到...可以通过以下方式在代码里获取环境变量[[NSProcessInfo processInfo] environment]dyld优化过App启动时间的同学都知道,启动时间分为main前和main后,XCode可以通过环境变量来打印main函数前的几个过程这部分如果不了解,可以参考我之前的这篇文章《深入理解App的启动过程》常用的有两个环境变量DYLD_PRINT_STATISTICSDYLD_PRINT_STATISTICS_DETAILS比如,开启DYLD_PRINT_STATISTICS,再运行应用,会发现log打印,然后你就知道哪里拖慢了你的应用启动:Total pre-main time: 823.29 milliseconds (100.0%)         dylib loading time: 226.83 milliseconds (27.5%)        rebase/binding time: 391.41 milliseconds (47.5%)            ObjC setup time:  72.95 milliseconds (8.8%)           initializer time: 131.81 milliseconds (16.0%)           slowest intializers :               libSystem.dylib :  12.17 milliseconds (1.4%)                    Foundation :  45.39 milliseconds (5.5%)    libMainThreadChecker.dylib :  74.21 milliseconds (9.0%)除此之外,dyld还有很多可以用来调试的环境变量DYLD_FRAMEWORK_PATHDYLD_FALLBACK_FRAMEWORK_PATHDYLD_VERSIONED_FRAMEWORK_PATHDYLD_LIBRARY_PATHDYLD_FALLBACK_LIBRARY_PATHDYLD_VERSIONED_LIBRARY_PATHDYLD_PRINT_TO_FILEDYLD_SHARED_REGIONDYLD_INSERT_LIBRARIESDYLD_FORCE_FLAT_NAMESPACEDYLD_IMAGE_SUFFIXDYLD_PRINT_OPTSDYLD_PRINT_ENVDYLD_PRINT_LIBRARIESDYLD_BIND_AT_LAUNCHDYLD_DISABLE_DOFSDYLD_PRINT_APISDYLD_PRINT_BINDINGSDYLD_PRINT_INITIALIZERSDYLD_PRINT_REBASINGSDYLD_PRINT_SEGMENTSDYLD_PRINT_STATISTICSDYLD_PRINT_DOFSDYLD_PRINT_RPATHSDYLD_SHARED_CACHE_DIRDYLD_SHARED_CACHE_DONT_VALIDATEZombie开启Zombie,当对象被释放后,他们仍然在内存里,只不过视图访问僵尸对象会报错,可以用于调试EXC_BAD_ACCESS。

扫描二维码分享话题