PGO:为什么 XCode 生成一个空的 .profdata 文件?

PGO: Why is XCode generating an empty .profdata file?

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

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

我确认编译和 link 命令包含 -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 中的 "Stop" 按钮退出应用程序不会生成有效的profile——相反,它生成一个 1064 字节的配置文件,其中包含零个函数。

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