2013-06-01 9 views
9

Ich versuche, die inneren Abläufe von XCodes Instruments zu verstehen. Unter MacOS kann DTrace alle Arten von Profiling-Daten sammeln. Unter iOS ist es auch zu vielen Dingen in der Lage, aber ich habe wiederholt gelesen, dass DTrace nicht nach iOS portiert wurde.Wie sammelt Instruments Daten von iOS, ohne dass DTrace verfügbar ist?

Wie funktioniert das?

Die Apple-Dokumentation zu DTrace sagt mir nicht viel über die inneren Abläufe hier. Ich habe jedoch festgestellt, dass XCode beim Erstellen einer eigenen App aus XCode mithilfe von Instrumenten anscheinend anders aufgebaut ist. Könnte das bedeuten, dass einige eigenständige DTrace-Anbieter mit meinem Code verknüpft sind?

Vielen Dank im Voraus!

/e: Ich würde diese Frage mit meiner ganzen 6 Rufpunkte bounty, wenn ich nur könnte ...

Antwort

5

Für iOS-Apps in dem Simulator ausgeführt wird, offensichtlich der Simulator ist ein Mac OS X-Programm, so kann es Verwenden Sie DTrace, um alles zu überwachen, was der Simulator macht.

Für iOS-Apps, die auf einem iPhone ausgeführt werden, stimme ich zu, dass die Dokumentation nur einen kleinen Einblick in die Vorgänge bietet. Es lädt wahrscheinlich Überwachungscode in den Zielprozess auf iOS (entweder durch Hinzufügen des Codes zur Kompilierzeit oder durch Verknüpfen zur Laufzeit) oder es gibt einen "traditionellen Debugger", der auf iOS läuft, gegen den Zielprozess, um die Ablaufverfolgung zu implementieren. Dies sind die einzigen Optionen, wenn für die Verwendung von DTrace keine Kernel-Ebene unterstützt wird.

Ich habe noch nie Instrumente benutzt, aber die Hauptsache ist, dass sie scheinbar OS-Level-Statistiken über I/O sammeln können, die normalerweise ohne DTrace nicht messbar wären. Ich bin nicht sicher, weil ich es nicht benutzt habe, aber es ist möglich, dass diese Statistiken nur I/O von leicht zu erkennenden Einstiegspunkten verfolgen (dh I/O-bezogene Syscalls vom spezifischen Zielprozess), oder dass es solche gibt andere iOS-spezifische Statistikquellen, die vom Betriebssystem veröffentlicht werden. Zum Beispiel können viele Systemstatistiken von Mac OS X durch den Aufruf sysctl abgerufen werden. Abhängig davon, welche Statistiken tatsächlich gesammelt werden, könnten Instrumente einfach einfache Zähler wie diese verwenden, um die meiste Arbeit zu erledigen.

Wenn Sie wirklich entschlossen sind, die Antwort zu finden, wäre es eine gute DTrace-Herausforderung, dieses Problem mit DTracing Instruments selbst zu lösen. Viel Glück :-)