9

我试图了解 XCode 仪器的内部工作原理。在 MacOS 上,它可以依靠 DTrace 收集各种分析数据。在 iOS 上,它也能做很多事情,但我反复读到 DTrace 还没有移植到 iOS。

那么这是如何工作的呢?

DTrace 上的 Apple 文档并没有告诉我太多关于这里的内部工作原理。然而,我注意到,当使用 Instruments 从 XCode 分析我自己的应用程序时,XCode 似乎以不同的方式构建它。这是否意味着它将一些独立的 DTrace 提供程序与我的代码相关联?

提前致谢!

/e:如果我能...

4

1 回答 1

5

对于在 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 挑战。祝你好运 :-)

于 2013-06-11T06:35:51.963 回答