【问题标题】:DYLD_PRINT_STATISTICS not showing anythingDYLD_PRINT_STATISTICS 没有显示任何内容
【发布时间】:2016-02-19 23:47:34
【问题描述】:

从静态库迁移到框架后,我正在尝试分析应用启动。我们有大约 30 个框架(仅供参考:cocoapods),所以我想检查它是否不会影响性能。团队中的轶事测试表明不是,但我也想要一些数字!

我添加了环境变量DYLD_PRINT_STATISTICSDYLD_PRINT_LIBRARIES 来查看链接器在做什么,但是我得到的所有输出都来自DYLD_PRINT_LIBRARIES 变量。我可以看到框架正在正确加载,但没有得到任何统计信息。

我已尝试重新启动设备以确保框架尚未在内存中,但这并没有帮助。

关于为什么我没有从DYLD_PRINT_STATISTICS 得到任何输出的任何其他建议?

【问题讨论】:

  • DYLD_PRINT_STATISTICS 似乎只适用于我的模拟器。
  • @RhythmicFistman 我正在模拟器上尝试:(
  • 这很奇怪。什么 xcode 版本/sim 版本/sim 设备/部署目标?现在猜。
  • @RhythmicFistman 叹了口气,原来我的显示器上运行了模拟器,但它实际上是在我插入的真实设备上构建的;一旦我拔掉它并实际瞄准模拟器,输出就会出现:) 如果您将评论作为答案,我会将其标记为已接受。
  • 谢谢!我用额外的猜测完善了评论

标签: ios xcode dynamic-linking dyld


【解决方案1】:

如果您在方案中启用两个环境变量,看起来您可以在设备上执行此操作: DYLD_PRINT_APIS = YES DYLD_PRINT_STATISTICS = YES

参考: https://github.com/artsy/eigen/issues/586#issuecomment-118606377

【讨论】:

  • 现在无需添加第一个变量即“DYLD_PRINT_APIS”即可工作。 Apple 提到他们在 WWDC 2016 中改进了这一点,developer.apple.com/videos/play/wwdc2016/406。跳到 26:00。在 Xcode 9.1 上测试。工作得很好。 :)
  • 在运行 iOS 9.3.5 的 iPhone 4S 上,DYLD_PRINT_APIS 是我的解决方案。 @Meilbn 提到的DYLD_PRINT_BINDINGS 会打印很多东西,以至于在疯狂记录几分钟后,我什至无法真正启动应用程序。
【解决方案2】:

虽然other flagsDYLD_PRINT_BINDINGS 在设备上可以正常工作,但DYLD_PRINT_STATISTICS 似乎只能在模拟器上工作(对我来说,iOS 9.0)。

this (possibly unrelated) version of dyld.cpp, from osx 10.10.5 中,似乎没有任何明显的设备排除DYLD_PRINT_STATISTICS,尽管有条件编译的TARGET_IPHONE_SIMULATORs 散布在整个代码中。

我猜这是一个错误。

【讨论】:

  • 这在 iOS 10 之后的设备上也可以使用。强烈推荐观看developer.apple.com/videos/play/wwdc2016/406
  • 天啊!!! DYLD_PRINT_BINDINGS 让控制台变得疯狂!控制台在我的 iPhone 5S (8.3) 设备上打印了很多日志...
猜你喜欢
  • 2020-03-24
  • 2014-07-21
  • 2020-06-16
  • 2021-02-05
  • 2018-10-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多