2013-06-01 6 views
9

Sto cercando di capire il funzionamento interno di XCode's Instruments. Su MacOS, può contare su DTrace per raccogliere tutti i tipi di dati di profilazione. Su iOS, è anche capace di molte cose, ma ho letto più volte che DTrace non è stato portato su iOS.In che modo gli strumenti raccolgono dati da iOS senza che DTrace sia disponibile?

Quindi, come funziona?

La documentazione Apple su DTrace non mi sta dicendo molto del funzionamento interno qui. Ho notato, tuttavia, che quando si crea il profilo della mia app da XCode usando gli strumenti, XCode sembra costruirlo in modo diverso. Potrebbe significare che collega alcuni fornitori DTrace standalone con il mio codice?

Grazie in anticipo!

/e: avrei di taglie a questa domanda con tutta la mia 6 punti reputazione Se solo potessi ...

risposta

5

Per le applicazioni iOS in esecuzione all'interno del simulatore, ovviamente, il simulatore è un programma per Mac OS X, in modo che possa utilizzare DTrace per monitorare tutto ciò che fa il simulatore.

Per le app iOS in esecuzione su un iPhone, sono d'accordo che la documentazione fornisce informazioni poco dettagliate su ciò che sta accadendo. Probabilmente sta caricando il codice di monitoraggio nel processo di destinazione su iOS (aggiungendo il codice in fase di compilazione o collegandolo in fase di runtime) oppure esiste un "debugger tradizionale" in esecuzione su iOS contro il processo di destinazione per implementare la traccia. Quelle sono praticamente le uniche opzioni se non esiste un supporto a livello di kernel per l'utilizzo di DTrace.

Non ho mai usato strumenti, ma la cosa principale che mi salta fuori è che sono in grado di raccogliere statistiche a livello di sistema operativo su I/O, che normalmente non sarebbero misurabili senza DTrace. Non sono sicuro perché non l'ho usato, ma è possibile che queste statistiche stiano registrando solo I/O da punti di ingresso facili da individuare (ad es. Sysc di I/O dallo specifico processo di destinazione) o che ci siano altre fonti statistiche specifiche per iOS pubblicate dal sistema operativo. Ad esempio, molte statistiche di sistema possono essere ottenute da Mac OS X chiamando il numero sysctl. A seconda delle statistiche che vengono effettivamente raccolte, gli strumenti potrebbero semplicemente utilizzare contatori semplici come questi per fare la maggior parte del lavoro.

Se sei davvero determinato a trovare la risposta, sarebbe una divertente sfida DTrace per capire questo problema da DTracing Instruments stesso. Buona fortuna :-)

Problemi correlati