Traceview, iz günlüklerinin grafik gösterimlerini sağlayan bir araçtır. Kodunuzu Debug sınıfıyla donatarak günlükleri oluşturabilirsiniz.
Bu izleme yöntemi çok hassastır çünkü izleme verilerini günlüğe kaydetmeye tam olarak kodun neresinde başlayıp neresinde durdurmak istediğinizi belirtebilirsiniz. Bu iz günlüklerini henüz oluşturmadıysanız ve bağlı cihazınızdan yerel makinenize kaydetmediyseniz Uygulamanızı izleyerek iz günlükleri oluşturma bölümüne gidin. Bu günlükleri Traceview kullanarak incelemek, uygulamanızda hata ayıklamanıza ve performansını profillemenize yardımcı olur.
Uygulamanızı Debug sınıfıyla donatarak kaydettiğiniz iz günlüklerini görüntülemeniz gerekmiyorsa uygulamanızın iş parçacıklarını incelemek ve yöntem izlerini kaydetmek için Android Studio 3.0 ve sonraki sürümlerde bulunan CPU Profiler'ı kullanabilirsiniz.
Traceview kullanarak iz günlüğü açma
Android Studio'dan Traceview ile bir iz günlüğü açmak için aşağıdaki adımları uygulayın:
- Android Device Monitor'ı başlatın.
- Android Device Monitor'da File > Open File'ı (Dosya > Dosya Aç) seçin.
- İncelemek istediğiniz
.tracedosyasına gidin. - Aç'ı tıklayın.
Traceview'a genel bakış
Traceview, iz günlüğünü açtıktan sonra günlük verilerini aşağıdaki iki bölmeyi kullanarak gösterir:
- Her bir iş parçacığının bir yönteme ne zaman girip çıktığını açıklayan bir zaman çizelgesi bölmesi
- İz günlüğü süresi boyunca her iş parçacığının yürütülmesini özetleyen bir profil bölmesi
Aşağıdaki bölümlerde, Traceview çıkış bölmeleri hakkında ek bilgiler verilmiştir.
Zaman çizelgesi bölmesi
Şekil 1'de zaman çizelgesi bölmesinin yakından görünümü gösterilmektedir. Her iş parçacığının yürütülmesi kendi satırında gösterilir ve geçen süre sağa doğru artar. Her yöntem farklı renklerle gösterilir. İlk satırın altındaki ince çizgiler, seçilen yöntemin alt öğelerini (girişten çıkışa kadar) gösterir.
Şekil 1. Traceview zaman çizelgesi bölmesi.
Profil bölmesi
Şekil 2'de gösterildiği gibi profil bölmesi, sistemin iz günlüğü süresi boyunca yürüttüğü tüm yöntemlerin ve bu yöntemleri yürütmek için harcanan sürenin listesini sağlar. Başka bir yöntemi çağıran yöntem üst, üst yöntemin çağırdığı yöntemler ise alt olarak adlandırılır. Bir yöntemi tıklayarak seçtiğinizde, hem üst hem de alt öğeleri iki ayrı düğüm altında gösterilir.
Tabloda, her yöntem (üst düzey düğüm) için aşağıdaki zamanlama bilgileri (milisaniye cinsinden) ve toplam sürenin yüzdesi gösterilir:
- Kapsayıcı ve özel süreler: Özel süre, yöntemin kendi kodunu yürütmek için harcanan süredir. Kapsayıcı süre ise yöntemin kendi kodunu yürütmek için harcanan süreye ek olarak alt öğelerini yürütmek için harcanan süredir.
- CPU ve gerçek zaman: CPU süresi yalnızca iş parçacığının CPU süresini etkin bir şekilde kullandığı zamanı dikkate alır. Gerçek zaman ise iş parçacığının etkin veya uyku modunda olup olmadığına bakılmaksızın uygulamanızın bir yönteme girdiği andan o yöntemden çıktığı ana kadar mutlak zamanlama bilgileri sağlar.
Profil bölmesindeki her üst düzey düğüm için tablodaki Calls + Rec, Calls/Total sütunu (Şekil 2'de gösterilmemiştir), yönteme yapılan çağrıların sayısını ve yinelemeli çağrıların sayısını bildirir. Üst ve alt yöntemler için ise bu sütun, yöntemin üst düzey düğümdeki yöntemin alt veya üst yöntemi olduğu çağrıların sayısını gösterir.
Şekil 2. Traceview profil bölmesi.
Traceview ile ilgili bilinen sorunlar
Traceview günlük kaydı, iş parçacıklarını iyi işlemediğinden aşağıdaki sorunlara neden olur:
- Profil oluşturma sırasında bir iş parçacığı sonlanırsa iş parçacığı adı yayınlanmaz (Android 5.1 ve sonraki sürümlerde düzeltilmiştir).
- Sanal makine, ileti dizisi kimliklerini yeniden kullanır. Bir mesaj dizisi durur ve başka bir mesaj dizisi başlarsa aynı kimliği alabilirler.