2013-06-01 20 views
9

Próbuję zrozumieć wewnętrzne działanie Instrumentów XCode. Na MacOS może polegać na DTrace, aby zebrać wszystkie rodzaje danych profilowania. W systemie iOS jest także zdolny do wielu rzeczy, ale wielokrotnie czytałem, że DTrace nie został przeniesiony na iOS.W jaki sposób Instruments zbiera dane z iOS bez dostępności DTrace?

Jak to działa?

Dokumentacja Apple na DTrace nie mówi mi wiele o wewnętrznych działaniach tutaj. Zauważyłem jednak, że podczas profilowania mojej własnej aplikacji z XCode przy użyciu Instruments, XCode wydaje się budować to inaczej. Czy to może oznaczać, że łączy on niektórych autonomicznych dostawców DTrace z moim kodem?

Z góry dziękuję!

/e: Chciałbym bounty na to pytanie z całą moją 6 punktów reputacji, jeśli tylko mógłbym ...

Odpowiedz

5

Dla iOS działa wewnątrz Simulator, oczywiście Simulator to program, Mac OS X, dzięki czemu można użyj DTrace do monitorowania wszystkiego, co robi symulator.

W przypadku aplikacji na iOS działających na iPhonie, zgadzam się, że dokumentacja zapewnia niewielki wgląd w to, co się dzieje. Prawdopodobnie jest to albo ładowanie kodu monitorowania do procesu docelowego w systemie iOS (albo przez dodanie kodu podczas kompilacji, albo przez połączenie go w środowisku wykonawczym) lub istnieje "tradycyjny debugger" uruchomiony w systemie iOS w stosunku do procesu docelowego w celu implementacji śledzenia. Są to prawie jedyne opcje, jeśli nie ma obsługi poziomu jądra do korzystania z DTrace.

Nigdy nie korzystałem z instrumentów, ale najważniejszą rzeczą, która wyskakuje na mnie, jest to, że są w stanie zbierać pozornie-OS statystyki na temat operacji wejścia/wyjścia, które normalnie nie byłyby mierzalne bez DTrace. Nie jestem pewien, ponieważ go nie używałem, ale możliwe, że te statystyki śledzą tylko operacje wejścia/wyjścia z łatwych do wykrycia punktów wejścia (np. Związane z I/O układy systemowe z określonego procesu docelowego) lub że istnieją inne źródła danych specyficzne dla systemu iOS publikowane przez system operacyjny. Na przykład wiele statystyk systemowych można uzyskać z systemu Mac OS X, dzwoniąc pod numer sysctl. W zależności od tego, jakie statystyki są faktycznie zbierane, Instruments może po prostu używać prostych liczników, takich jak te, aby wykonać większość pracy.

Jeśli jesteś naprawdę zdeterminowany, aby znaleźć odpowiedź, byłoby zabawnym wyzwaniem DTrace, aby rozwiązać ten problem przez samą funkcję DTracing Instruments. Powodzenia :-)