Android Studio Debug Kullanımı

Merhaba arkadaşlar,
mobilhanem.com sitemiz üzerinden anlattığımız/yayınladığımız derslerimize bugün Android Studio’da Debug kullanımından bahsedeceğim. Yazılım ile uğraşan arkadaşların elbette debug konusunda aşinalığı vardır.Debug can kurtaran bir yapıdır. Kodu parça parça ilerletmemizi ve hatanın nerden kaynaklı olduğunu bulmamızı yarayan bir yapıdır.
Hata genellikle iki şekilde olur.

1.si syntax hatası. Yani yazım yanlışı hatalarıdır. Bu hataları zaten editörler tespit etmekte ve kodu run etmemize izin vermemektedir.Run ettiğimiz zaman direk syntax hatası olan yerleri genellikle kırmızı ile gösterir ve yazılımcıyı uyarır. Bu hataları düzeltmesi kolaydır.

2.si ise Run-Time yani çalıştırıldığı andaki ortaya çıkan hatalardır. Bu tarz hatalar kod çalıştırılmadan anlaşılmamaktadır. Ne zamanki kod çalıştırılır bu hatalar ortaya çıkar ve Syntax hataları gibi kolay bulunamaz. İşte burada debug kavramı devreye giriyor ve hatayı bulmamızı kolaylaştırıyor. Örneğin null pointer ve array outofindex hataları gibi hatalar.

Sadece hata bulmak için kullanılmayan Debug yazdığımız kodu test edip kod içerisindeki değişkenlerin istediğimiz değeri alıp almadığını kontrol etmemizde yarayan bir yapıdır. Debug android studio’da nasıl kullanılır bu yazımda sizlere kendi bildiğim ve yeterli gördüğüm kadarıyla anlatmaya çalışacağım.Bu dersimi iki bölümden oluşturmaya çalışacağım. İkinci dersimde daha ileri seviye debug kullanımını anlatmaya çalışacağım.Bu dersimi hazırlarken Java ve Android developer olan Koray Uçar arkadaşımın yardımını aldım. Ona da burdan teşekkür ederim.

Gelelim debug olayına. Öncelikle kodumuzun durmasını istediğimiz satırın başına break point koyuyoruz. Bir seferde birden fazla break point koyabiliriz ve kodu Run düğmesi ile değil onun yanındaki Örümceğe benzeyen Debug düğmesi ile çalıştırıyoruz.

Debug - Break Point ve Debug Butonu
Debug – Break Point ve Debug Butonu

Uygulamamızı Debug butonu ile çalıştırdık . Cihazımız bize Debug ile çalıştırıldığı bilgisi verecek.

Android Debug

 

Debug yapmasını istemiyorsak Force Close deyip kapatabiliriz.

Debug etmesini istiyorsak kısa bir süre bekliyoruz ve kendi çalışmaya başlıyor. Sonra kodun çalışması gereken yerde break point varsa kodumuz orda durur ve oraya kadar olan değişkenlerin değerlerini gösterir. Break Pointten sonraki değerleri ise null veya 0 olarak gösterir.

Android Debug

 

Evet asıl işimiz burdan sonra başlıyor. Bundan sonra adım adım kodu takip edebiliriz, direk diğer break pointe gönderebiliriz,method varsa içine girebilir yada girmeden direk devam ettirebiliriz.Bunları Run menüsü altındaki alt menülerden yapabiliriz. Şimdi burdaki menüler ne işe yarar bildiklerimi anlatacağım.

Debug Run Menüsü Kullanımı
Debug Run Menüsü Kullanımı

1- Step Over: Kodu satır satır ilerletir. Satır satır ilerledikçe aşağıdaki Variables menüsünden yada direk Variable’ların üzerine gelerek değerlerini görebiliriz.Step Over’la kod, satır satır ilerler ve örneğin sırada bir method varsa o methodunda içine girmez ve satır satır ilerlemeye devam eder.Ancak methodun içinde bir break point varsa o break pointe gider yani method içine girmiş olur. Bizim koddan örnek verirsek p.y= getY(); satırından sonra direk getY() methodunun içine girer ve int b = 15; satırına geçer(break point olan satır) ve methodun içindede satır satır ilerledikten sonra tekrar Toast.makeText… satırına gelir.

2-Force Step Over: Buda aynı Step Over gibi kodu satır satır iletir ancak bir farkı vardır. Yukarıda p.y= getY(); satırından sonra methodun içine giriyordu çünkü içerde break point vardı. Ama Force Step Over dediğimizde method içinde break point olsada method içine girmez ve alttaki satıra geçer.

Not: Aslında kod methodun içine girer yapması gereken işleri yapar ama bize ordaki işlemleri göstermez.Step Overda da aynı şekilde.

3-Step Into: Kodu Step Over ile ilerletiyoruz ve p.y= getY(); satırına geldik ve diyelim ki getY() methodunun içinde break point yok dolayısıyla methodun içindeki işlemleri göstermeden direk alt satıra inecek. Ama biz method içinide debug etmek istiyoruz. İşte p.y= getY() satırındayken Step Into ile method içindeki ilk satıra geçiş yapabiliriz ve tekrardan satır satır ilerleyebiliriz. Kısaca sıradaki methodun içine girip method içinide Debug etmek istiyorsak Step Into kullanırız.

4-Step Out: Step Into’nun tersi şekilde ilerler. Girdiğimiz method içinden geri çıkmak istiyorsak Step Out kullanırız. Kodumuzdan örnek vercek olursak getY() methoduna Step Into ile girdik iki satır ilerledik ve artık geri dönmek istiyoruz. Step Out’a bastığımız an p.y= getY(); satırına geri döner ve tekrardan satır satır ilerlememize olanak sağlar.

5-Run to Cursor: Adından da anlaşılacağı gibi Cursor un olduğu satıra gider. Örneğin kodu ilk çalıştırdık ve ilk break point olan p.x = 20; satırına geldik. Mouse ile Toast.makeText.. olan satıra tıkladık . Artık mouse imlecimiz orada Run to Cursor dediğimiz an kod o satıra kadar çalışıp imlecin olduğu satırda duracaktır. Ama burda aynı Step Over da olduğu gibi arada çağırılan bir method içinde yada aradaki bir kod da break point varsa break point olan satırda duracaktır.

6-Force Run to Cursor: Aynı Run to Cursor mantığında çalışır ama aradaki methodda veya aradaki kodda bir break point varsa da o break pointte durmaz ve mouse imlecinin olduğu satıra kadar çalışır.

7-Resume: En çok kullanılan Debug butonudur. Kodumuz bir break pointte durdu. Resume dediğimiz an kod çalısmaya devam edecektir. Baska break point yoksa normal çalışmasına devam eder. Başka bir break point varsa o break pointe kadar çalışır ve o break pointte kalır.

Evet arkadaşlar benim çalışırken kullandığım yapıları case’leri bunlar. Bunların dışında iki olaydan daha bahsedeceğim.Projemizin çok büyük bir proje olduğunu yüzlerce class’tan oluştuğunu onlarca break point barındırdığını düşünün her bir break pointte durmasını istemiyoruz yada tüm break pointleri liste halinde görmek istiyorsak bunu aşağıdaki butonlardan yapıyoruz.

Android Studio Debug

Sol alttaki kırmızı içinde olan butonlardan 1. si tüm projedeki break pointleri gösterir ona tıklayıp istediğimizi kaldırabilir ve uygulamayı Resume ettirebiliriz. Veya hepsiyle tek tek uğrasmak istemiyoruz debug ettik istediğimizi elde ettik artık uygulama devam etsin diyorsak 2. butona basıyoruz. Break Pointleri “mute” pozisyona alıp Resume ettiriyoruz ve böylelikle debuglara takılmıyor ve normal şekilde çalışmaya devam ediyor.

Son birşeyden daha bahsetmek istiyorum. Diyelim break pointi koyduk kodu debug ile çalıştırdık. Kod break pointe kadar geldi ve durdu. 15 satır sonra tekrardan durmasını istiyoruz ama break point koymamışız. Satır satır inmektense kod çalışıyor olsa bile break pointi ekleyip Resume dediğimizde yeni eklediğimiz break pointe kadar kod ilerleyecektir.Yani anlatmak istediğim kod çalıştıktan sonrada break point ekleyebiliriz.

Evet arkadaşlar bu dersimin sizlere faydalı olacağını umut ediyorum. Debug kullanımının daha ileri seviyesi olan bir ders daha paylaşmaya çalışacağım.

Sizlerden ricamız facebook.com/mobilhanem sayfamızı beğenmenizdir. Bir dahaki dersime kadar kendinize iyi bakın. Görüşmek dileğiyle…

Tüm Android Ders, Proje ve Kaynak Kodlar için tıklayınız.

 

 

2

Taha Kırca

iOS & Android & Apple Watch Developer, Mobilhanem.com yazarı, Karadeniz Uşağu, Ordu Sevdalısı

2 Yorum

  • Talha kardeş anlatım için öncelikle teşekürler bizlere yol gösteriyorsunuz.
    Ben android yazılıma yeni başladım.
    Daha önce yazılım konusunda uzmanlığım var php c# css asp gibi dilleri çok iyi derecede kodlayan biriyim.
    Android tabanlı bir oyun geliştirmeye başladım diğer kullandığım programlarda debug kullanıyordum.
    Android studio ilede bunu kullanmak istedim.
    Debuğ kullanana kadar run fonksiyonu ile uygulamayı telefonda similetör kullanmadan çalıştırıyor işlemler arası log tutuyordum.
    Uygulama içine ayrı bir modül ekledim.
    Hata olduğunu gösteriyor bulunamıyordu.
    Hatayı bir şekilde buldum ve uygulama sorunsuz çalışıyor oyunu oynayabiliyordum.
    Yeni bir uygulama içi tool bar ekledim.
    Hatayı daha rahat bulayım diye senin bu yazınla debug nasıl kullanılıyor öğrendim uyguladım.

    Ama tuhaf olanı su bir sonra app run yaptım uygulamadaki fonksiyonlar çalışmaz tuhaf olanı ise hatada vermiyordu.
    Class içine gönderilen veriyi log halinde çıktı verdiğimde parametre geliyor fonksiyon içindeki bitmap ve rakamlar hiç bir şekilde çalışmıyor.

    Ayrıca test dosyası şuan içindeki test import dosyasının olmadığı yönünde kırmızıya çevrilmiş durumda.

    Genel bir özet almak gerekirsek
    Uygulama telefona yükleniyor class lar arası parametreler geliyor ama fonksiyon içindeki parametreler işlem yapmıyor.
    Loglarda ve hata panelindede hata göstermiyor.

    Nerde hata yapmış olabilirim acaba
    Bu hata debug sonrası oluşmaya başladı app run çalışılırken yokdu.

    Teşekürler

Haftalık Bülten

Mobilhanem'de yayınlanan dersleri haftalık mail almak ister misiniz?