Android Hata Ayıklama Günlüğü
Geliştiricilerin uygulamalarında hata ayıklamak için kullandığı en yaygın hilelerden biri, çağrısı Console.WriteLine
yapmaktır. Ancak, Android gibi bir mobil platformda konsol yoktur. Android cihazlar, uygulama yazarken kullanabileceğiniz bir günlük sağlar. Bu, bazen almak için yazdığınız komut nedeniyle logcat olarak adlandırılır. Günlüğe kaydedilen verileri görüntülemek için Hata Ayıklama Günlüğü aracını kullanın.
Android Hata Ayıklama Günlüğüne Genel Bakış
Hata Ayıklama Günlüğü aracı, Visual Studio aracılığıyla bir uygulamada hata ayıklarken günlük çıkışını görüntülemenin bir yolunu sağlar. Hata ayıklama günlüğü aşağıdaki cihazları destekler:
- Fiziksel Android telefonlar, tabletler ve giyilebilir cihazlar.
- Android Öykünücüsü'nde çalışan bir Android Sanal cihazı.
Not
Hata Ayıklama Günlüğü aracı Xamarin Live Player ile çalışmaz.
Hata Ayıklama Günlüğü, uygulama cihazda tek başına çalışırken oluşturulan günlük iletilerini görüntülemez (örneğin, Visual Studio bağlantısı kesilirken).
Visual Studio'dan Hata Ayıklama Günlüğüne Erişme
Cihaz Günlüğü aracını açmak için araç çubuğundaKi Cihaz Günlüğü (logcat) simgesine tıklayın:
Alternatif olarak, aşağıdaki menü seçimlerinden birinden Cihaz Günlüğü aracını başlatın:
- Diğer Windows > Cihaz Günlüğünü Görüntüle >
- Araçlar > Android > Cihaz Günlüğü
Aşağıdaki ekran görüntüsünde Hata Ayıklama Aracı penceresinin çeşitli bölümleri gösterilmektedir:
Cihaz Seçici – hangi fiziksel cihazın veya çalışan öykünücünün izleneceğini seçer.
Günlük Girdileri – Logcat'ten gelen günlük iletilerinin tablosu.
Günlük Girdilerini Temizle – Tablodan tüm geçerli günlük girdilerini temizler.
Yürüt/Duraklat – Yeni günlük girdilerinin güncelleştirilmesi veya duraklatılması arasında geçiş yapar.
Stop : Yeni günlük girdilerinin görüntülenmesini durdurur.
Arama Kutusu – Günlük girdilerinin bir alt kümesini filtrelemek için bu kutuya arama dizeleri girin.
Hata Ayıklama Günlüğü araç penceresi görüntülendiğinde, izlenecek Android cihazı seçmek için cihaz açılır menüsünü kullanın:
Cihaz seçildikten sonra, Cihaz Günlüğü aracı çalışan bir uygulamadan günlük girdilerini otomatik olarak ekler; bu günlük girişleri günlük girdileri tablosunda gösterilir. Cihazlar arasında geçiş yapmak durur ve cihaz günlüğünü başlatır. Cihaz seçicide herhangi bir cihaz görünmeden önce bir Android projesinin yüklenmesi gerektiğini unutmayın. Cihaz, cihaz seçicide görünmüyorsa, Başlat düğmesinin yanındaki Visual Studio cihaz açılan menüsünde kullanılabildiğini doğrulayın.
Komut Satırından Erişme
Bir diğer seçenek de hata ayıklama günlüğünü komut satırı aracılığıyla görüntülemektir. Bir komut istemi penceresi açın ve Android SDK platform araçları klasörüne gidin (genellikle SDK platform araçları klasörü C:\Program Files (x86)\Android\android-sdk\platform-tools konumunda bulunur).
Yalnızca tek bir cihaz (fiziksel cihaz veya öykünücü) takılıysa, günlük aşağıdaki komut girilerek görüntülenebilir:
$ adb logcat
Birden fazla cihaz bağlıysa, cihazın açıkça tanımlanması gerekir. Örneğin , adb -d logcat bağlı tek fiziksel cihazın günlüğünü görüntülerken , adb -e logcat çalıştıran tek öykünücünün günlüğünü gösterir.
adb girerek ve yardım iletilerini okuyarak daha fazla komut bulunabilir.
Hata Ayıklama Günlüğüne Yazma
İletiler, Android.Util.Log sınıfının yöntemleri kullanılarak Hata Ayıklama Günlüğüne yazılabilir. Örneğin:
string tag = "myapp";
Log.Info (tag, "this is an info message");
Log.Warn (tag, "this is a warning message");
Log.Error (tag, "this is an error message");
Bu, aşağıdakine benzer bir çıkış oluşturur:
I/myapp (11103): this is an info message
W/myapp (11103): this is a warning message
E/myapp (11103): this is an error message
Hata Ayıklama Günlüğü'ne yazmak için de kullanabilirsinizConsole.WriteLine
; bu iletiler logcat'te biraz farklı bir çıkış biçimiyle görünür (bu teknik özellikle Android'de Xamarin.Forms uygulamalarında hata ayıklarken kullanışlıdır):
System.Console.WriteLine ("DEBUG - Button Clicked!");
Bu, logcat'te aşağıdakine benzer bir çıktı oluşturur:
Info (19543) / mono-stdout: DEBUG - Button Clicked!
İlginç İletiler
Günlüğü okurken (ve özellikle başkalarına günlük parçacıkları sağlarken), günlük dosyasının tamamını incelemek genellikle çok hantaldır. Günlük iletilerinde gezinmeyi kolaylaştırmak için, aşağıdakine benzer bir günlük girdisi arayarak başlayın:
I/ActivityManager(12944): Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=GcTest.GcTest/gctest.Activity1 } from pid 24175
Özellikle, uygulama paketinin adını da içeren normal ifadeyle eşleşen bir satır arayın:
^I.*ActivityManager.*Starting: Intent
Bu, bir etkinliğin başlangıcına karşılık gelen satırdır ve aşağıdaki iletilerin çoğu (ancak tümü değil) uygulamayla ilişkili olmalıdır.
Her iletinin, iletiyi oluşturan işlemin işlem tanımlayıcısını (pid) içerdiğine dikkat edin. Yukarıdaki ActivityManager
iletide, işlem 12944
iletiyi oluşturdu. Hangi işlemin hata ayıklanan uygulamanın işlemi olduğunu belirlemek için mono'ya bakın. MonoRuntimeProvider iletisi:
I/ActivityThread( 602): Pub TouchTest.TouchTest.__mono_init__: mono.MonoRuntimeProvider
Bu ileti, başlatılan işlemden gelir. Bu pid'i içeren sonraki tüm iletiler aynı işlemden gelir.