对于在 Simulator 中运行的 iOS 应用程序,显然 Simulator 是一个 Mac OS X 程序,因此它可以使用 DTrace 来监控 Simulator 所做的一切。
对于在 iPhone 上运行的 iOS 应用程序,我同意该文档对正在发生的事情几乎没有提供任何洞察力。它可能是将监视代码加载到 iOS 上的目标进程中(通过在编译时添加代码或在运行时将其链接),或者在 iOS 上针对目标进程运行“传统调试器”以实现跟踪。如果没有对使用 DTrace 的内核级支持,那么这些几乎是唯一的选择。
我从来没有使用过 Instruments,但最让我惊讶的是,它们能够收集看似 OS 级别的 I/O 统计信息,而如果没有 DTrace,这通常是无法测量的。我不确定,因为我没有使用它,但这些统计信息可能只是跟踪来自易于检测的入口点的 I/O(即来自特定目标进程的 I/O 相关系统调用),或者有由操作系统发布的其他特定于 iOS 的统计数据源。例如,可以通过调用 Mac OS X 获取许多系统统计信息sysctl
。根据实际收集的统计数据,Instruments 可能只是使用像这样的简单计数器来完成大部分工作。
如果您真的下定决心要找到答案,那么由 DTracing Instruments 自己解决这个问题将是一个有趣的 DTrace 挑战。祝你好运 :-)