Menghasilkan Log Pelacakan dengan Menginstrumentasikan Aplikasi Anda

Untuk menghasilkan pelacakan metode eksekusi aplikasi, Anda bisa menginstrumentasikan aplikasi dengan menggunakan kelas Debug . Menginstrumentasikan aplikasi dengan cara ini akan memberi Anda kontrol lebih besar secara persis terhadap kapan perangkat mulai dan berhenti merekam informasi pelacakan. Perangkat juga menyimpan log pelacakan Anda dengan menggunakan nama yang Anda tetapkan, sehingga nanti Anda bisa dengan mudah mengidentifikasi setiap log. Selanjutnya Anda bisa menampilkan setiap log pelacakan dengan menggunakan Android Studio atau Traceview.

Cara lain untuk melacak aplikasi Anda, yang tidak mengharuskan Anda menginstrumentasikan kode aplikasi, adalah memulai dan menghentikan pelacakan metode dengan menggunakan CPU Profiler di Android Studio. Untuk mempelajari lebih lanjut, bacalah Memeriksa Aktivitas CPU dan Pelacakan Metode dengan CPU Profiler.

Sebelum Anda mulai menghasilkan log pelacakan, pastikan aplikasi Anda memiliki izin untuk menulis ke penyimpanan eksternal (WRITE_EXTERNAL_STORAGE) agar bisa menyimpan log pelacakan ke perangkat.

Menginstrumentasikan aplikasi Anda

Untuk membuat log pelacakan, panggil startMethodTracing() di mana Anda ingin sistem mulai mencatat log data pelacakan.

Di panggilan tersebut, Anda bisa menetapkan nama untuk file .trace, dan sistem akan menyimpannya ke direktori khusus paket yang dimaksudkan untuk data aplikasi persisten pada perangkat target—ini adalah direktori yang sama yang ditunjukkan oleh getExternalFilesDir() dan berada di direktori ~/sdcard/ pada kebanyakan perangkat. File ini berisi data pelacakan metode biner dan tabel pemetaan berisi thread dan nama metode. Untuk menghentikan pelacakan, panggil stopMethodTracing().

Contoh berikut memulai dan menghentikan perekaman suatu log pelacakan dengan nama sample.trace:

// 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 stopMethodTracing(), at which time it writes
// the buffered data to the output file.
Debug.stopMethodTracing();

Perhatikan, jika aplikasi Anda memanggil lagi startMethodTracing() tanpa mengubah nama log pelacakan, maka aplikasi itu akan menimpa log yang telah disimpan ke perangkat. Untuk mempelajari cara mengubah nama setiap log pelacakan secara dinamis, masuklah ke bagian tentang menyimpan beberapa log.

Jika sistem mencapai ukuran buffering maksimum sebelum Anda memanggil stopMethodTracing(), sistem akan menghentikan pelacakan dan mengirim notifikasi ke konsol. Metode-metode yang memulai dan menghentikan pelacakan bekerja di seluruh bagian proses aplikasi Anda. Yaitu, Anda bisa memanggil startMethodTracing() dalam metode onCreate(Bundle) aplikasi Anda, dan memanggil stopMethodTracing() dalam metode onDestroy() aktivitas itu.

Perhatikan, aplikasi Anda akan berjalan lebih lambat bila pembuatan profil diaktifkan. Karena itu, Anda tidak boleh menggunakan data pembuatan profil untuk menentukan pengaturan waktu absolut (misalnya, "metode foo() memerlukan waktu 2,5 detik untuk dijalankan"). Informasi pengaturan waktu dalam log pelacakan hanya berguna saat membandingkannya dengan log pelacakan sebelumnya, sehingga Anda bisa melihat apakah perubahan terbaru membuat aplikasi Anda menjadi lebih cepat atau lebih lambat.

Saat menerapkan ke perangkat yang menjalankan Android 5.0 (API level 21) dan yang lebih tinggi, Anda bisa menggunakan pembuatan profil berbasis contoh untuk membuat profil dengan dampak lebih kecil pada kinerja waktu proses. Untuk mengaktifkan pembuatan profil berbasis contoh, panggil startMethodTracingSampling() (sebagai ganti memanggil startMethodTracing()) dengan interval sampling yang ditetapkan. Sistem akan mengumpulkan contoh secara berkala hingga aplikasi Anda memanggil stopMethodTracing().

Menyimpan beberapa log

Jika aplikasi Anda memulai dan menghentikan pelacakan metode berkali-kali tanpa menetapkan nama baru bagi log pelacakan, perangkat akan menimpa log pelacakan yang lebih lama dengan yang baru—artinya, aplikasi hanya mempertahankan log pelacakan terbaru. Untuk menyimpan beberapa log pelacakan ke perangkat Anda, ganti nama log pelacakan secara dinamis setiap kali aplikasi Anda memanggil startMethodTracing(). Contoh di bawah ini menggunakan kelas SimpleDateFormat untuk menyertakan tanggal dan waktu saat ini saat menamai setiap log pelacakan:

// Uses the SimpleDateFormat class to create a String with
// the current date and time.
SimpleDateFormat date =
        new SimpleDateFormat("dd_MM_yyyy_hh_mm_ss");
String logDate = date.format(new Date());
// Applies the date and time to the name of the trace log.
Debug.startMethodTracing(
        "sample-" + logDate);

Mengakses log pelacakan pada perangkat

Setelah sistem membuat log pelacakan pada perangkat, Anda bisa mengakses file dengan salah satu cara berikut:

  • Menggunakan Device File Explorer. Untuk membuka Device File Explorer, klik View > Tool Windows > Device File Explorer (atau klik tombol Device File Explorer di bilah jendela alat). Seperti yang ditampilkan dalam gambar 1 Anda bisa menemukan file .trace dengan mengarahkan ke direktori khusus paket aplikasi Anda.

    Gambar 1. Menemukan log pelacakan dengan menggunakan Device File Explorer.

    • Untuk menampilkan dengan cepat log pelacakan dalam jendela editor IDE, seperti yang ditampilkan dalam gambar 2, klik dua kali file tersebut. Anda juga bisa klik-kanan file tersebut untuk menyimpannya ke disk lokal kemudian menggunakan Traceview untuk memeriksa informasi lebih detail, misalnya metode induk dan metode anak, rata-rata waktu eksekusi per panggilan metode, dan CPU versus realtime. Jika Anda tidak melihat file log, cobalah mengklik-kanan pada direktori yang Anda harap akan melihatnya di sana dan memilih Synchronize.

      Gambar 2. Menampilkan file .trace di Android Studio.

  • Salin file tersebut ke mesin lokal Anda dengan menggunakan perintah adb pull. Perintah di bawah ini menyalin log pelacakan bernama sample.trace dari perangkat ke direktori ~/Documents/trace-logs/ mesin lokal Anda. Nantinya Anda bisa menampilkan file .trace menggunakan Traceview.

    adb pull path-on-device/sample.trace ~/Documents/trace-logs/