Genera log di traccia strumentando la tua app

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.

    Figura 1. Localizzazione dei log di traccia tramite Esplora dispositivi.

  • Copia il file sulla tua macchina locale utilizzando il comando adb pull. Il comando seguente copia un log di traccia denominato sample.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.