【问题标题】:How does Instruments collect data from iOS without DTrace being available?Instruments 如何在没有 DTrace 的情况下从 iOS 收集数据?
【发布时间】:2013-05-28 05:21:48
【问题描述】:

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

那么它是如何工作的呢?

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

提前致谢!

/e:如果我能...

【问题讨论】:

    标签: ios xcode-instruments dtrace


    【解决方案1】:

    对于在模拟器中运行的 iOS 应用,显然模拟器是一个 Mac OS X 程序,因此它可以使用 DTrace 来监控模拟器所做的一切。

    对于在 iPhone 上运行的 iOS 应用程序,我同意该文档对正在发生的事情提供的信息很少。它可能是将监视代码加载到 iOS 上的目标进程中(通过在编译时添加代码或在运行时将其链接),或者在 iOS 上针对目标进程运行“传统调试器”以实现跟踪。如果没有使用 DTrace 的内核级支持,那么这些几乎是唯一的选择。

    我从未使用过 Instruments,但最让我惊讶的是,它们能够收集看似操作系统级别的 I/O 统计信息,而如果没有 DTrace,这通常是无法测量的。我不确定,因为我没有使用它,但这些统计信息可能只是跟踪来自易于检测的入口点的 I/O(即来自特定目标进程的 I/O 相关系统调用),或者有由操作系统发布的其他特定于 iOS 的统计数据源。例如,可以通过调用sysctl 从 Mac OS X 获取许多系统统计信息。根据实际收集的统计数据,Instruments 可能只是使用像这样的简单计数器来完成大部分工作。

    如果您真的下定决心要找到答案,那么由 DTracing Instruments 自己解决这个问题将是一个有趣的 DTrace 挑战。祝你好运:-)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-09
      • 1970-01-01
      • 1970-01-01
      • 2018-06-25
      • 1970-01-01
      相关资源
      最近更新 更多