Per generare una traccia di metodo dell'esecuzione della tua app, puoi instrumentare la tua app
utilizzando l'Debug
. La strumentazione della tua app in questo modo ti offre un maggiore controllo su esattamente quando
il dispositivo avvia e interrompe la registrazione delle informazioni di tracciamento. Inoltre, il dispositivo salva
i log di traccia utilizzando i nomi specificati, in modo da poter identificare facilmente ogni log
in un secondo momento. Puoi quindi visualizzare ogni log di traccia utilizzando Android Studio
Profilo CPU.
Puoi anche avviare e interrompere il tracciamento nel Profiler CPU senza instrumentare il codice della tua app.
Prima di iniziare a generare log di traccia, assicurati che l'app abbia aggiunto logica salvare i log di traccia nel file specifico per l'app Google Cloud.
Strumenti per l'app
Per creare log di traccia, chiama startMethodTracing()
in cui vuoi che il sistema inizi a registrare i dati di tracciamento.
Nella chiamata, puoi specificare il nome
.trace
e il sistema lo salva in un file di immagine specifico per il pacchetto
destinata ai dati delle app persistenti sul dispositivo di destinazione,
nella stessa directory restituita
getExternalFilesDir()
e si trova nella directory ~/sdcard/
sulla maggior parte dei dispositivi.
Questo file contiene i dati di traccia del metodo binario e una tabella di mappatura con thread
e i nomi dei metodi. Per interrompere il tracciamento, chiama
stopMethodTracing()
.
Il seguente esempio avvia e interrompe la registrazione di un log di traccia con il nome
sample.trace
:
Kotlin
// Starts recording a trace log with the name you provide. For example, the // following code tells the system to start recording a .trace file to the // device with the name "sample.trace". Debug.startMethodTracing("sample") // The system begins buffering the generated trace data, until your // application calls <code><a href="/reference/android/os/Debug.html#stopMethodTracing()">stopMethodTracing()</a></code>, at which time it writes // the buffered data to the output file. Debug.stopMethodTracing()
Java
// Starts recording a trace log with the name you provide. For example, the // following code tells the system to start recording a .trace file to the // device with the name "sample.trace". Debug.startMethodTracing("sample"); ... // The system begins buffering the generated trace data, until your // application calls <code><a href="/reference/android/os/Debug.html#stopMethodTracing()">stopMethodTracing()</a></code>, at which time it writes // the buffered data to the output file. Debug.stopMethodTracing();
Tieni presente che se la tua app chiama
startMethodTracing()
senza modificare il nome del log di traccia, il log esistente verrà sovrascritto
salvato sul dispositivo. Scopri come modificare dinamicamente il nome di ogni traccia
vai alla sezione sul salvataggio di più log.
Se il sistema raggiunge la dimensione massima del buffer prima di chiamare
stopMethodTracing()
,
il sistema smette di tracciare e invia una notifica alla console.
I metodi che avviano e interrompono le tracce funzionano nell'intero processo dell'app. Questo
è che puoi chiamare
startMethodTracing()
nella tua attività
onCreate(Bundle)
e richiama stopMethodTracing()
in onDestroy()
di quell'attività
.
Tieni presente che l'app funziona più lentamente quando è attiva la profilazione. Vale a dire che
non devono utilizzare i dati di profilazione per determinare tempi assoluti (ad esempio, "metodo
foo()
richiede 2,5 secondi per l'esecuzione"). Le informazioni sulla tempistica nei log di traccia
utile solo per il confronto con i log di traccia precedenti, per consentirti di verificare
modifiche rendono l'app più veloce o più lenta.
Quando esegui il deployment su dispositivi con Android 5.0 (livello API 21) e versioni successive, puoi:
usa la profilazione basata su campioni per profilare con un minore impatto sulle prestazioni di runtime. A
abilita profilazione di esempio, chiama
startMethodTracingSampling()
(anziché chiamare startMethodTracing()
) con un campionamento specificato
intervallo di tempo. Il sistema raccoglie periodicamente campioni fino a quando l'app non chiama
stopMethodTracing()
.
Salva più log
Se l'app avvia e interrompe un rilevamento di metodo più volte senza specificare un
nuovo nome per il log di traccia, il dispositivo sovrascrive il log di traccia precedente con
uno nuovo, cioè conserva solo il log di traccia più recente. Per salvarne più di uno
log di traccia al dispositivo, rinominali in modo dinamico ogni volta che vengono
chiama startMethodTracing()
.
L'esempio seguente utilizza SimpleDateFormat
per includere la data e l'ora correnti nella denominazione di ogni log di traccia:
Kotlin
// Uses the <code><a href="/reference/java/text/SimpleDateFormat.html">SimpleDateFormat</a></code> class to create a String with // the current date and time. val dateFormat: DateFormat = SimpleDateFormat("dd_MM_yyyy_hh_mm_ss", Locale.getDefault()) val logDate: String = dateFormat.format(Date()) // Applies the date and time to the name of the trace log. Debug.startMethodTracing("sample-$logDate")
Java
// Uses the <code><a href="/reference/java/text/SimpleDateFormat.html">SimpleDateFormat</a></code> class to create a String with // the current date and time. SimpleDateFormat dateFormat = new SimpleDateFormat("dd_MM_yyyy_hh_mm_ss", Locale.getDefault()); String logDate = dateFormat.format(new Date()); // Applies the date and time to the name of the trace log. Debug.startMethodTracing( "sample-" + logDate);
Accedi ai log di traccia sul dispositivo
Dopo che il sistema ha creato il log di traccia sul dispositivo, puoi accedere al file in uno dei seguenti modi:
Utilizzare Esplorazione dispositivo. Per aprire Esplora dispositivi, fai clic su Visualizza > Finestre degli strumenti > Esplora dispositivi (o fai clic su Esplorazione dispositivi nella barra della finestra degli strumenti). Come mostrato nella Figura 1 puoi trovare i file
.trace
andando alla sezione una directory specifica per il pacchetto.Copia il file sulla tua macchina locale utilizzando il comando
adb pull
. Il comando seguente copia un log di traccia denominatosample.trace
dal dispositivo in nella directory~/Documents/trace-logs/
della macchina locale.adb pull path-on-device/sample.trace ~/Documents/trace-logs/
Puoi quindi importa il file di traccia con il Profiler CPU.