geo*_*ish 15 iphone xcode opengl-es instruments ios
我正在编写一个自动分析系统,以便在我的应用程序中分析不同的GPU密集型屏幕.我一直在尝试使用'XCode Instruments',使用'OpenGL ES Driver'仪器来捕获gpu使用数据.
我的自动化系统从命令行运行Xcode Instruments,命令行运行App,配置文件并捕获数据,并将数据写入".trace"文件.
我现在希望能够打开跟踪文件,并使用我的自动分析系统读取跟踪数据,以便我可以通知App开发人员应用程序的各个部分如何执行.
但是我找不到任何方法来读取跟踪文件.它似乎是包含各种目录的包,并且埋没在.zip文件中似乎包含一些二进制数据.如何解析此文件中的数据?
仪器系统看起来相当复杂,我很惊讶它访问它产生的跟踪数据有多难.
有谁知道如何解析跟踪文件?
我目前正在使用XCode 4.6.1
Jus*_*Sid 17
好吧,那么回答主要问题:.zip存档中的数据是一个用NSArchiver
类序列化的数据(当用十六进制工具打开时它们有一个相当独特的标题(我使用了十六进制恶魔),所以是第一个线索).这是非常直接的阅读,所有你要做的就是打电话NSUnarchiver
,至少这是理论.在我详细介绍之前,这是一个非常简单的示例应用程序,它会转储一些信息:https://github.com/JustSid/Traced
所以,问题NSArchiver
,和NSUnarchiver
,是你首先需要将所有已归档的课程,和所有您需要的,因为它是存档读取数据出的顺序的第二个(那是有点棘手,我曾经class-dump
为一些必需的类转储接口,然后尝试按对象取消归档数据对象并查看我返回的内容.幸运的是,NSArchiver
死于描述性错误消息,如果缺少类,它会告诉你它的名字是什么).我遇到的最大问题是Instruments二进制文件和使用过的框架不包含我需要的所有类,特别是存档包含一个名为的类的序列化数据XRVideoCardRun
.我假设bundle中的.template
文件.trace
包含一个带有所需类的动态库(我的意思是,它的大小超过300kb并且包含很多blob(它是btw二进制plist)).我太懒了,无法从中提取二进制数据并class-dump
反对它,我很幸运,从存档中得出的大部分数据都与我期望为超类看到的一致XRRun
(我发现了在其中一个Instruments框架中),除了包含字典的数组外,其内容看起来像样本数据.
所以,其余的只是把所有东西组合在一起.如果您查看示例应用程序,最有趣的部分应该是XRRun.m
和.h
文件.它们包含一些文档,以及有关如何从示例中提取数据的一些内容,尽管您可能希望将其替换为您自己的逻辑以实现自动化.希望能帮助到你.
该应用程序再次抛出您的示例文件输出:
Run 1, starting at 24.05.13 17:42:16, running until 24.05.13 17:42:28
Sample 0: FPS: 27 Device: 0% Renderer: 0% Tiler: 0% Timestamp: 1.012740
Sample 1: FPS: 35 Device: 11% Renderer: 10% Tiler: 2% Timestamp: 2.018574
Sample 2: FPS: 34 Device: 33% Renderer: 32% Tiler: 7% Timestamp: 3.026101
Sample 3: FPS: 59 Device: 59% Renderer: 59% Tiler: 16% Timestamp: 4.032030
Sample 4: FPS: 60 Device: 59% Renderer: 58% Tiler: 16% Timestamp: 5.038990
Sample 5: FPS: 59 Device: 59% Renderer: 58% Tiler: 16% Timestamp: 6.046022
Sample 6: FPS: 59 Device: 57% Renderer: 53% Tiler: 17% Timestamp: 7.051187
Sample 7: FPS: 60 Device: 67% Renderer: 66% Tiler: 14% Timestamp: 8.057343
Sample 8: FPS: 59 Device: 64% Renderer: 64% Tiler: 11% Timestamp: 9.064914
Sample 9: FPS: 60 Device: 67% Renderer: 67% Tiler: 11% Timestamp: 10.072592
Sample 10: FPS: 59 Device: 65% Renderer: 65% Tiler: 15% Timestamp: 11.080248
Run Code Online (Sandbox Code Playgroud)
(PS:如果格式改变,应用程序也会破坏......)
归档时间: |
|
查看次数: |
7237 次 |
最近记录: |