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 :-)