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.WriteLineyapmaktı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:

Location of Device Log tool on the toolbar

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:

Parts of the Debug Tool window

  • 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:

Location of Device Selector

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.