如果没有DTrace可用,Instruments如何从iOS收集数据?

时间:2013-06-01 13:44:12

标签: ios xcode-instruments dtrace

我试图了解XCode的仪器的内部工作原理。在MacOS上,它可以依赖DTrace来收集各种分析数据。在iOS上,它也有很多功能,但我反复阅读DTrace尚未移植到iOS。

那怎么办?

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

提前致谢!

/ e:如果我能做到的话,我会用我的整个6点声明点来回答这个问题......

1 个答案:

答案 0 :(得分:5)

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

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

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

如果您真的有决心找到答案,那么DTrace Instruments本身就可以解决这个问题,这将是一个有趣的DTrace挑战。祝你好运: - )