Uygulamanızı Kullanarak İzleme Günlükleri Oluşturma

Uygulamanızın yürütülmesine dair bir yöntem izi oluşturmak için uygulamanızı enstrümantasyon Debug kullanılıyor sınıfını kullanır. Uygulamanızı bu şekilde kullanmanız durumunda tam olarak ne zaman cihaz, izleme bilgilerini kaydetmeye başlar ve durdurulur. Cihaz, her günlüğü kolayca tanımlayabilmeniz için, belirttiğiniz adları kullanarak iz günlüklerinizi daha sonra. Daha sonra, Android Studio'yu kullanarak her iz günlüğünü görüntüleyebilirsiniz CPU Profil Aracı.

Ayrıca transkriptinizi CPU Profiler'da izlemeyi başlatma ve durdurma enstrümantasyonunu kullanabilirsiniz.

İz günlükleri oluşturmaya başlamadan önce uygulamanızın izleme günlüklerini uygulamaya özgü dizinine ekleyin.

Uygulamanızı kullanma

İz günlükleri oluşturmak için startMethodTracing() komutunu çağırın sistemin izleme verilerini günlüğe kaydetmeye başlamasını istediğiniz yeri seçin.

Görüşmede, görüşme için kullanılacak .trace dosyası olarak yükleyebilirsiniz ve sistem bunu pakete özel bir hedef cihazdaki kalıcı uygulama verileri için tasarlanmış bir dizindir. döndürdüğü dizinin aynısı olan getExternalFilesDir() ve çoğu cihazda ~/sdcard/ dizininde bulunur. Bu dosya, ikili yöntem iz verilerini ve iş parçacığı içeren bir eşleme tablosunu içerir bahsedeceğim. İzlemeyi durdurmak için şunu arayın: stopMethodTracing()

Aşağıdaki örnek, şu ada sahip iz günlüğünü kaydetmeyi başlatır ve durdurur: 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();

Uygulamanız startMethodTracing(). adını değiştirmeden, mevcut günlüğün üzerine yazar ve cihaza kaydedilir. Her bir iz adının dinamik olarak nasıl değiştirileceğini öğrenmek için günlüğüne birden fazla günlüğü kaydetme ile ilgili bölüme gidin.

Siz çağrı yapmadan önce sistem maksimum arabellek boyutuna ulaşırsa stopMethodTracing(), sistem izlemeyi durdurur ve konsola bir bildirim gönderir. İzleri başlatan ve durduran yöntemler uygulama sürecinizin tamamında işe yarar. O telefon edebilir startMethodTracing(). etkinliğinde onCreate(Bundle) yöntemini çağırın ve stopMethodTracing() yöntemini çağırın bu etkinliğin onDestroy() yöntemidir.

Profil oluşturma etkinleştirildiğinde uygulamanızın daha yavaş çalıştığını unutmayın. Yani, Mutlak zamanlamaları belirlemek için profil oluşturma verilerini kullanmamalıdır (örneğin, "yöntem foo() sayfasının çalışması 2,5 saniye sürer). İzleme günlüklerindeki zamanlama bilgileri: önceki iz günlükleriyle karşılaştırıldığında yararlıdır. Böylece, son verilere sahip değişiklikler uygulamanızı daha hızlı veya daha yavaş hale getirir.

Android 5.0 (API düzeyi 21) ve sonraki sürümleri çalıştıran cihazlara dağıtım yaparken şunları yapabilirsiniz: Çalışma zamanı performansı üzerindeki etkisi daha az olan profil oluşturmak için örnek tabanlı profil oluşturma yöntemini kullanın. Alıcı: örnek profil oluşturmayı etkinleştirme, çağrı startMethodTracingSampling(). (startMethodTracing() çağrısı yerine) belirtilen bir örneklemeyle seçebilirsiniz. Sistem, uygulamanız çağrı yapana kadar düzenli aralıklarla örnekler toplar stopMethodTracing()

Birden çok günlüğü kaydetme

Uygulamanız bir yöntem izlemeyi başlatma ve durdurma işlemi için bir yöntem izlemeyi birden fazla kez başlatırsa ve yeni bir ad belirtirseniz cihaz, eski iz günlüğünün üzerine yani yalnızca en son iz günlüğünü saklar. Birden fazla kaydetmek için cihazınıza İzleme günlüklerini dinamik bir şekilde yeniden adlandırabilirsiniz. Uygulamanız her seferinde iz günlüğünü startMethodTracing() araması yapar. Aşağıdaki örnekte SimpleDateFormat kullanılmaktadır sınıfını kullanın:

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

Cihazdaki izleme günlüklerine erişin

Sistem, cihazınızda izleme günlüğünü oluşturduktan sonra dosyaya erişebilirsiniz aktarabilirsiniz:

  • Cihaz Gezgini'ni kullanın. Cihaz Gezgini'ni açmak için Görünüm > Araç Pencereleri > Cihaz Gezgini'ni açın (veya Cihaz Gezgini düğmesine basın). Şekil 1'de gösterildiği gibi .trace dosyalarını uygulamanızın pakete özgü dizin oluşturur.

    Şekil 1. Cihaz Gezgini'ni kullanarak iz günlüklerini bulma.

  • adb pull komutunu kullanarak dosyayı yerel makinenize kopyalayın. Aşağıdaki komut, cihazdan sample.trace adlı bir iz günlüğünü yerel makinenizin ~/Documents/trace-logs/ dizinini oluşturur.

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

Ardından izleme dosyasını içe aktarın ve CPU Profil Aracı.