Memeriksa log rekaman aktivitas dengan Traceview

Traceview adalah alat yang memberikan representasi grafis dari log rekaman aktivitas. Log tersebut bisa Anda peroleh dengan melengkapi kode menggunakan class Debug. Metode perekaman aktivitas ini sangat akurat karena dapat menentukan lokasi persis yang Anda inginkan dalam kode untuk mulai dan berhenti melakukan pencatatan log data rekaman aktivitas. Jika Anda belum membuat log rekaman aktivitas ini dan menyimpannya dari perangkat terhubung ke komputer lokal, buka Membuat log rekaman aktivitas dengan menginstrumentasikan aplikasi Anda. Memeriksa log ini menggunakan Traceview akan membantu Anda men-debug aplikasi dan membuat profil performanya.

Jika Anda tidak perlu melihat log rekaman aktivitas yang telah direkam dengan menginstrumentasikan aplikasi dengan class Debug, Anda dapat menggunakan CPU Profiler yang disertakan dalam Android Studio 3.0 dan yang lebih baru untuk memeriksa thread aplikasi dan membuat rekaman aktivitas metode.

Membuka log rekaman aktivitas menggunakan Traceview

Untuk membuka log pelacakan dengan Traceview dari Android Studio, lanjutkan seperti berikut:

  1. Mulai Android Device Monitor.
  2. Di Android Device Monitor, pilih File > Open File.
  3. Buka file .trace yang ingin Anda periksa.
  4. Klik Buka.

Ringkasan Traceview

Setelah membuka log rekaman aktivitas, Traceview akan menampilkan data log menggunakan dua panel berikut:

  • Panel linimasa yang mendeskripsikan waktu setiap thread masuk dan keluar dari suatu metode
  • Panel profil yang meringkas eksekusi setiap thread selama periode log rekaman aktivitas

Bagian di bawah ini memberikan informasi tambahan tentang panel output Traceview.

Panel linimasa

Gambar 1 menunjukkan tampilan dekat panel linimasa. Setiap eksekusi thread ditampilkan di barisnya masing-masing, dengan waktu berlalu yang meningkat ke kanan. Setiap metode ditampilkan dengan berbagai warna. Garis tipis di bawah baris pertama menunjukkan turunan (dari masuk hingga keluar) metode yang dipilih.

Panel linimasa Traceview yang menampilkan eksekusi thread dari waktu ke waktu

Gambar 1. Panel linimasa Traceview.

Panel profil

Seperti yang ditunjukkan pada gambar 2, panel profil berisi daftar semua metode yang dijalankan sistem selama periode log rekaman aktivitas dan waktu yang dihabiskan untuk menjalankan metode-metode tersebut. Sebuah metode yang memanggil metode lain disebut sebagai induk, dan metode yang dipanggil induk disebut sebagai turunan. Ketika Anda memilih metode dengan mengkliknya, metode tersebut akan menampilkan induk dan turunannya di bawah dua node yang terpisah.

Untuk setiap metode (node tingkat atas), tabel melaporkan informasi pengaturan waktu berikut (dalam milidetik) serta persentase total waktu:

  • Waktu inklusif dan eksklusif: Waktu eksklusif adalah waktu yang dihabiskan untuk menjalankan kode metodenya sendiri, sementara waktu inklusif adalah waktu yang dihabiskan untuk menjalankan kode metodenya sendiri ditambah waktu yang dihabiskan untuk menjalankan turunannya.
  • CPU dan real-time: Waktu CPU hanya mempertimbangkan waktu saat thread aktif menggunakan waktu CPU, sementara real-time memberikan informasi pengaturan waktu absolut sejak aplikasi Anda memasuki suatu metode hingga saat keluar dari metode tersebut, terlepas dari apakah thread aktif atau tidur.

Untuk setiap node tingkat atas di panel profil, kolom Calls + Rec, Calls/Total dalam tabel (tidak diperlihatkan dalam gambar 2) melaporkan jumlah panggilan ke metode dan jumlah panggilan berulang. Atau, untuk metode induk dan turunan, kolom ini menampilkan jumlah panggilan saat metode tersebut menjadi turunan atau induk metode dalam node tingkat atas.

Panel profil Traceview yang menampilkan waktu metode inklusif dan eksklusif

Gambar 2. Panel profil Traceview.

Masalah umum Traceview

Pencatatan log Traceview tidak menangani thread dengan baik, sehingga menghasilkan masalah berikut:

  • Jika thread keluar selama pembuatan profil, nama thread tidak akan ditampilkan (diperbaiki di Android 5.1 dan yang lebih baru);
  • VM menggunakan kembali ID thread. Jika thread berhenti dan yang lainnya dimulai, thread tersebut mungkin mendapatkan ID yang sama.