ios - PGO:为什么 XCode 会生成空的 .profdata 文件?

标签 ios xcode llvm xcode8 pgo

我正在尝试在 XCode 8 中使用配置文件引导优化。

我已按照说明 here 进行操作。我确保使用 XCode 中的停止按钮终止我的应用程序,如文档中所述。

我验证了编译和链接命令包含 -fprofile-instr-generate论证。

该进程成功生成了 .profdata 文件,但该文件只有 1064 字节,考虑到我的程序在配置文件生成期间执行了数十或数十万个函数调用,这似乎非常小。运行“xcrun -sdk iphoneos llvm-profdata show <profdata file> ”会产生以下输出:

Total functions: 0
Maximum function count: 0
Maximum internal block count: 0

这似乎表明我的 profdata 文件完全是空的!

此时,我非常困惑,我不知道如何生成有效的 .profdata 文件。谁能指导一下吗?

最佳答案

生成优化配置文件时,以某种方式退出应用程序非常重要。

尽管 Apple 文档与此相反,我发现通过按 XCode 中的“停止”按钮退出应用程序不会生成有效的配置文件 - 相反,它会生成 1064 字节的配置文件具有零功能。

我了解到可以通过调用 exit(0) 或通过 iOS 界面终止应用程序来退出应用程序(在 iOS 10 中:双击主页按钮,向上滑动)正确生成配置文件。就我而言,正确生成的配置文件为 34 兆字节。

关于ios - PGO:为什么 XCode 会生成空的 .profdata 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41839410/

相关文章:

ios - iOS7无线上网/网络录音怎么访问?

ios - 更改 UIActivityViewController 的背景颜色

iOS:奇怪的 XCode 编译错误

iphone - UIImageView 上的多个按钮

ios - Apple 推荐的 Swift 日志记录方法

xcode - 为什么编译器告诉 'Expression was too complex'

ios - 加载消息时滚动到 UITableView 的底部

c++ - 如何在 Clang 中启用内联函数的编译?

syntax - 了解最简单的 LLVM IR

由于信号 : illegal instruction 4,Xcode 7 命令失败