さて、主な質問に答えるために: .zip アーカイブ内のデータは、NSArchiver
クラスでシリアル化されたデータの塊です (16 進ツール (私は 16 進フィーンドを使用しました) で開くと、かなり特徴的なヘッダーを持っているため、が最初の手がかりでした)。読むのはかなり簡単です。必要なのは を呼び出すことだけですNSUnarchiver
。少なくともそれが理論です。詳細に入る前に、いくつかの情報をダンプする非常に単純なサンプル アプリを次に示します: https://github.com/JustSid/Traced
したがって、 、 、 の問題はNSArchiver
、NSUnarchiver
まずアーカイブされたすべてのクラスを取得する必要があり、次にアーカイブされた順序でデータを読み取る必要があることです (これはトリッキーなビットでした。以前class-dump
は、必要なクラスのいくつかのインターフェイスをダンプしてから、データ オブジェクトをオブジェクトごとに展開して、返されたものを調べようとしましたが、幸いなことに、NSArchiver
説明的なエラー メッセージが表示されて死にます。その名前は何ですか)。私が抱えていた最大の問題は、Instruments バイナリと使用されているフレームワークに必要なすべてのクラスが含まれていないことでした。特に、アーカイブには という名前のクラスのシリアル化されたデータが含まれていますXRVideoCardRun
。私はその.template
中のファイルが.trace
bundle には、必要なクラスを含む動的ライブラリが含まれています (つまり、サイズが 300kb を超え、多くのブロブが含まれています (バイナリ plist です))。私は怠惰すぎて、そこからバイナリ データを抽出して実行することができませclass-dump
んでした。幸運にも、アーカイブから出てきたほとんどのデータは、スーパークラスに期待していたものと一致していましたXRRun
(私が見つけたものです)。ただし、辞書を含む配列は例外で、その内容はサンプル データのように見えます。
だから、残りはすべてを組み合わせるだけでした。サンプル アプリを調べると、最も興味深い部分はXRRun.m
and.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
(PS: フォーマットが変わると、アプリも壊れます...)