Uygulamanızda hata ayıklama

Android Studio, aşağıdakileri ve diğer işlemleri yapmanıza olanak tanıyan bir hata ayıklayıcı sağlar:

  • Uygulamanızın hatalarını ayıklamak için bir cihaz seçin.
  • Java, Kotlin ve C/C++ kodunuzda kesme noktaları ayarlayın.
  • Değişkenleri inceleyin ve çalışma zamanında ifadeleri değerlendirin.

Bu sayfa, temel hata ayıklayıcı işlemleriyle ilgili talimatlar içerir. Daha fazla belge için ayrıca IntelliJ IDEA hata ayıklama dokümanlarına bakın.

Hata ayıklamayı etkinleştir

Hata ayıklama işlemine başlamadan önce aşağıdakileri yapın:

Cihazınızda hata ayıklamayı etkinleştirin.
Emülatör kullanıyorsanız hata ayıklama varsayılan olarak etkindir. Ancak bağlı bir cihaz için cihaz geliştirici seçeneklerinde hata ayıklamayı etkinleştirmeniz gerekir.
Hata ayıklaması yapılabilir bir derleme varyantı çalıştırın.

Şu özelliklere sahip bir derleme varyantı kullanın: debuggable true dahil (Kotlin komut dosyalarında isDebuggable = true).

Genelde, "hata ayıklama" işlemini yapmak için varsayılan her Android Studio'da bulunan bir varyant build.gradle dosyasında görünür olmasa da projesidir. Ancak, hata ayıklama yapılabilir olması gereken yeni derleme türleri tanımlarsanız derleme türüne debuggable true eklemeniz gerekir:

GroovyKotlin
android {
    buildTypes {
        customDebugType {
            debuggable true
            ...
        }
    }
}
android {
    buildTypes {
        create("customDebugType") {
            isDebuggable = true
            ...
        }
    }
}

Bu özellik, C/C++ kodlu modüller için de geçerlidir.

Not: jniDebuggable mülkü artık kullanılmıyor.

Uygulamanız, hata ayıklama yapmak istediğiniz bir kitaplık modülüne bağlıysa bu kitaplık da hata ayıklama simgelerini koruyabilmesi için debuggable true ile paketlenmelidir. Uygulama projenizin hata ayıklama yapılabilir varyantlarının, bir kitaplık modülünün hata ayıklama yapılabilir varyantını aldığını doğrulamak için kitaplığınızın varsayılan olmayan sürümlerini yayınlayın.

Hata ayıklamayı başlat

Hata ayıklama oturumu başlatmak için aşağıdaki adımları uygulayın:

  1. Uygulamanızın kodunda durak noktaları ayarlayın.
  2. Araç çubuğunda, hedef cihaz menüsünden uygulamanızın hatalarını ayıklamak için bir cihaz seçin.
    Hedef cihaz menüsü.
    Şekil 1. Hedef cihaz menüsü.

    Yapılandırılmış cihazınız yoksa Android Emulator'u kullanmak için bir cihazı USB üzerinden bağlamanız, bir cihazı kablosuz ağ üzerinden bağlamanız veya bir AVD oluşturmanız gerekir.

  3. Araç çubuğundaki Hata ayıkla simgesini tıklayın.

    Uygulamanız cihazda zaten çalışıyorsa Çalıştır'dan Hata Ayıklama'ya geçmek isteyip istemediğinizi soran bir iletişim kutusu gösterilir. Hata ayıklama işlemine başlamak için cihazın yeniden başlatılması gerekir. Uygulamanın aynı örneğinin çalışmaya devam etmesini sağlamak için Hata Ayıklama'yı İptal Et'i tıklayın ve bunun yerine hata ayıklayıcıyı çalışan bir uygulamaya bağlayın. Aksi takdirde Android Studio bir APK oluşturur, bu APK'yı hata ayıklama anahtarıyla imzalar, seçtiğiniz cihaza yükler ve çalıştırır.

    Projenize C ve C++ kodu eklerseniz Android Studio, yerel kodunuzda hata ayıklama yapmak için Hata Ayıklama penceresinde LLDB hata ayıklayıcısını da çalıştırır.

  4. Hata ayıklama penceresi açılmıyorsa Görünüm > Araç Pencereleri > Hata Ayıklama'yı seçin veya araç penceresi çubuğunda Hata Ayıklama'yı tıklayın.

Hata ayıklayıcıyı çalışan bir uygulamaya ekleme

Uygulamanız cihazınızda zaten çalışıyorsa uygulamanızı yeniden başlatmadan aşağıdaki adımları uygulayarak hata ayıklama işlemine başlayabilirsiniz:

  1. Android işlemine hata ayıklayıcı ekle'yi tıklayın.
  2. Choose Process (İşlem Seçin) iletişim kutusunda, yapmak istediğiniz işlemi seçin hata ayıklayıcıyı şuraya ekleyin:
    1. Emülatör veya köklü cihaz kullanıyorsanız tüm işlemleri görmek için Tüm işlemleri göster'i işaretleyebilirsiniz. Köklenmiş bir cihazda bu, cihazda çalışan tüm işlemleri gösterir. Ancak, köklendirilmemiş bir cihazda yalnızca hata ayıklama yapılabilir süreçler gösterilir.
    2. Android Hata Ayıklayıcı Ayarlarını Kullan menüsünden, Search Ads 360'ta bulunan mevcut bir çalıştırma/hata ayıklama yapılandırması ile ilgili daha fazla bilgi edinin. C ve C++ kodunda bu, LLDB başlangıç komutlarını, LLDB sonrası ekleme komutlarını ve mevcut bir yapılandırmadaki simge dizinlerini yeniden kullanmanıza olanak tanır.
    3. Mevcut bir çalıştırma/hata ayıklama yapılandırmanız yoksa Yeni Oluştur'u seçin. Bu seçim, farklı bir hata ayıklama türü seçebileceğiniz Hata Ayıklama Türü menüsünü etkinleştirir. Android Studio, varsayılan olarak projenizde Java veya C/C++ kodu olup olmadığına göre sizin için en iyi hata ayıklayıcı seçeneğini belirlemek üzere Otomatik olarak algıla hata ayıklama türünü kullanır.
  3. Tamam'ı tıklayın.

    Hata ayıklama penceresi görüntülenir.

Cihaz Gezgini'ndeki (Görünüm > Araç Pencereleri > Cihaz Gezgini) İşlemler sekmesinde de hata ayıklama yapılabilir işlemlerin listesi bulunur. Buradan bir işlem seçip son zorla durdurmak , veya hata ayıklayıcıyı belirli bir işleme ekleyin .

Hata ayıklama penceresi

Şekil 2.Hata Ayıklama penceresi.

Hata ayıklama penceresi,

  1. Yürütme ve gezinme araç çubuğu Duraklatma noktalarıyla çalışma başlıklı makaleyi inceleyin.
  2. İleti dizisi seçici
  3. Değerlendirme ve izleme ifadesi girişi. Değişkenleri inceleme başlıklı makaleyi inceleyin.
  4. Yığın ekranı
  5. Değişkenler bölmesi. Değişkenleri inceleme bölümüne bakın.

Not: Android Studio hata ayıklayıcı ve çöp toplayıcısı bir şekilde entegredir. Android sanal makinesi, hata ayıklayıcının bildiği hiçbir nesnenin, hata ayıklayıcının bağlantısı kesilene kadar çöp toplanmamasını garanti eder. Bu durum, hata ayıklayıcı bağlıyken nesnelerin birikmesine neden olabilir. Örneğin, hata ayıklayıcı çalışan bir iş parçacığı görürse, Thread iş parçacığı sonlandırılmış olsa bile hata ayıklayıcı bağlantıyı kesene kadar ilişkili nesne çöp toplanmayacaktır.

Hata ayıklayıcı türünü değiştirme

Java/Kotlin kodu ile C/C++ kodundaki hataları ayıklamak için farklı hata ayıklayıcı araçları gerektiğinden, Android Studio hata ayıklayıcı, kullanılacak hata ayıklayıcı türünü seçmenize olanak tanır. Varsayılan olarak Android Studio projenizde algıladığı dillere göre hangi hata ayıklayıcının kullanılacağına Otomatik Olarak Algıla hata ayıklayıcı türü.

Hata ayıklama yapılandırmasında hata ayıklayıcıyı manuel olarak seçmek için Çalıştır > Düzenleyin Yapılandırmalar. Çalıştır > Android işlemine hata ayıklayıcı ekle'yi tıkladığınızda görünen iletişim kutusunda da hata ayıklayıcıyı seçebilirsiniz.

Kullanılabilir hata ayıklama türleri şunlardır:

Otomatik Olarak Algıla
Android Studio'nun hata ayıkladığınız kod için en iyi seçeneği otomatik olarak seçmesini istiyorsanız bu hata ayıklama türünü seçin. Örneğin, projenizde C veya C++ kodunuz varsa Android Studio otomatik olarak Çift hata ayıklama türünü kullanır. Aksi takdirde Android Studio, yalnızca Java hata ayıklama türünü kullanır.
Yalnızca Java
. Yalnızca Java veya Kotlin'de yazılan kodda hata ayıklamak istiyorsanız bu hata ayıklama türünü seçin. Yalnızca Java hata ayıklayıcı, yerel kodunuzda ayarladığınız kesme noktalarını veya saatleri yoksayar.
Yalnızca Yerel (yalnızca C/C++ kodunda kullanılabilir)
Kodunuzda yalnızca LLDB'yi kullanmak istiyorsanız bu hata ayıklama türünü seçin. Bunu kullanırken Java hata ayıklayıcı oturum görünümü kullanılamıyor. Varsayılan olarak LLDB yalnızca yerel kodunuzu inceler ve Java'nızdaki ayrılma noktalarını yoksayar girin. Java kodunuzda da hata ayıklama yapmak istiyorsanız Otomatik Olarak Algıla veya Çift Hata Ayıklama türüne geçin.

Yerel hata ayıklama, yalnızca aşağıdaki gereksinimleri karşılayan cihazlarda çalışır:

  • Cihaz run-as'i destekliyor.

    Cihazın run-as hizmetini destekleyip desteklemediğini kontrol etmek için şu komutu şurada çalıştırın: cihazınıza bağlı ADB kabuğu:

    run-as your-package-name pwd
    

    your-package-name yerine uygulamanızın paket adını yazın. Öğe run-as destekliyorsa komut hata olmadan döndürecektir.

  • Cihazda ptrace etkin.

    ptrace'ün etkin olup olmadığını kontrol etmek için cihazınıza bağlı ADB kabuğunda aşağıdaki komutu çalıştırın:

    sysctl kernel.yama.ptrace_scope
    

    ptrace etkinleştirilirse komut, 0 değerini veya unknown key hatası. ptrace etkinleştirilmezse bir değer (0 dışında).

Çift (Java + Yerel) - yalnızca C/C++ koduyla kullanılabilir
. Hem Java hem de yerel kodda hata ayıklama arasında geçiş yapmak istiyorsanız bu hata ayıklama türünü seçin. Android Studio, uygulamanıza hem Java hata ayıklayıcısını hem de LLDB'yi ekler Böylece her bir Sprint’te uygulamanızı yeniden başlatmadan hem Java hem de yerel kodunuzdaki ayrılma noktaları veya hata ayıklama yapılandırmanızı değiştirebilirsiniz.

Şekil 2'de Hata Ayıklama penceresi başlığının sağındaki iki sekmeye dikkat edin. Uygulamada hem Java hem de C++ kodu bulunduğundan, -java ile belirtildiği gibi bir sekme yerel kodda, diğeri ise Java kodunda hata ayıklama içindir.

Şekil 3. Yerel kodda hata ayıklama için Sekme ve Java kodunda hata ayıklama için Sekme.

Not: Search Ads 360 tarafından optimize edilen yerel kodda hata ayıklarken derleyici için şu uyarı mesajını alabilirsiniz:
This function was compiled with optimizations enabled. Some debugger features may not be available. Optimizasyon bayraklarını kullanırken derleyici, bir kod derleyerek daha verimli şekilde çalışmasını sağlar. Bu durum hata ayıklayıcının zor olduğundan, beklenmedik veya yanlış bilgileri hata ayıklayıcıyı kullanın. Bu nedenle, yerel kodunuzda hata ayıklama yaparken derleyici optimizasyonlarını devre dışı bırakmanız gerekir.

Sistem günlüğünü kullanma

Sistem günlüğü, uygulamanızda hata ayıklama yaparken sistem mesajlarını gösterir. Bu mesajlar, cihazda çalışan uygulamalardan alınan bilgileri içerir. Bir web sitesini ziyaret eden uygulamanızın hatalarını ayıklamak için sistem günlüğünü kullanın, kodunuzun günlük mesajlarını yazdığından ve yığını yazdırdığından emin olun istisnaları takip etmek için kullanın.

Kodunuza günlük mesajları yazma

Kodunuzda günlük mesajları yazmak için Log sınıfını kullanın. Günlük mesajları yardımı çalışırken sistem hata ayıklama çıktısını toplayarak yürütme akışını anlamanızı sağlar. uygulamanızla etkileşime girmeniz gerekir. Günlük iletileri ayrıca, günlük iletilerinizin uygulama başarısız oldu. Günlük kaydı hakkında daha fazla bilgi için Logcat ile günlük yazma ve görüntüleme başlıklı makaleyi inceleyin.

Aşağıdaki örnekte, etkinliğiniz başladığında önceki durum bilgilerinin kullanılıp kullanılamayacağını belirlemek için nasıl günlük mesajları ekleyeceğiniz gösterilmektedir:

KotlinJava
import android.util.Log
...
class MyActivity : Activity() {
    ...
    override fun onCreate(savedInstanceState: Bundle?) {
        ...
        if (savedInstanceState != null) {
            Log.d(TAG, "onCreate() Restoring previous state")
            /* restore state */
        } else {
            Log.d(TAG, "onCreate() No saved state available")
            /* initialize app */
        }
        ...
    }
  ...
  companion object {
    private val TAG: String = MyActivity::class.java.simpleName
    ...
  }
}
import android.util.Log;
...
public class MyActivity extends Activity {
    private static final String TAG = MyActivity.class.getSimpleName();
    ...
    @Override
    public void onCreate(Bundle savedInstanceState) {
       ...
       if (savedInstanceState != null) {
            Log.d(TAG, "onCreate() Restoring previous state");
            /* restore state */
        } else {
            Log.d(TAG, "onCreate() No saved state available");
            /* initialize app */
        }
        ...
    }
}

Geliştirme sırasında kodunuz istisnaları yakalayabilir ve yığın izlemeyi (stack trace) sisteme yazabilir günlük:

KotlinJava
fun someOtherMethod() {
    try {
        ...
    } catch (e : SomeException) {
        Log.d(TAG, "someOtherMethod()", e)
    }
}
void someOtherMethod() {
    try {
        ...
    } catch (SomeException e) {
        Log.d(TAG, "someOtherMethod()", e);
    }
}

Not: Hata ayıklama günlük mesajlarını ve yığın izleme yazdırma çağrılarını kodunuzu uygulamanız gerekir. Bunun için bir DEBUG ayarlayın hata ayıklama günlük mesajlarını işaretleyip koşullu ifadelerin içine yerleştirin.

Sistem günlüğünü görüntüleme

Şekil 4'te gösterildiği gibi, Logcat penceresinde hata ayıklama ve diğer sistem mesajlarını görüntüleyebilir ve filtreleyebilirsiniz. Örneğin, atık toplama gerçekleştiğinde veya uygulamanıza eklediğiniz Log sınıfı.

Logcat'i kullanmak için hata ayıklamaya başlayın ve Logcat sekmesini seçin.

Şekil 4. Filtre ayarları bulunan Logcat penceresi.

Logcat ve filtreleme seçeneklerinin açıklaması için Logcat ile günlük yazma ve görüntüleme başlıklı makaleyi inceleyin.

Kesme noktalarıyla çalışma

Android Studio, farklı hata ayıklama işlemlerini tetikler. Birkaç tür ayrılma noktası vardır:

Çizgi ayrılma noktası
En yaygın tür, uygulamanızın belirli bir zamanda yürütülmesini duraklatan bir çizgi ayrılma noktasıdır girin. Duraklatılmış durumdayken değişkenleri inceleyebilir, ifadeleri değerlendirebilir ve ardından yürütmeyi satır satır devam ettirerek çalışma zamanındaki hataların nedenlerini belirleyebilirsiniz.
Yöntem kesme noktası
Yöntem kesme noktası, uygulamanız belirli bir yönteme girdiğinde veya bu yöntemden çıktığında uygulamanızın yürütülmesini duraklatır. Duraklatılmış durumdayken değişkenleri inceleyebilir, ifadeleri değerlendirebilir ve ardından işleme devam edebilirsiniz. belirlemek için her satıra bir kod yazın. Bir birleştirilebilir işlevde durma noktası belirlediğinizde hata ayıklayıcı, yeniden derlemeye hangi değişikliklerin neden olmuş olabileceğini belirlemenize yardımcı olmak için birleştirilebilir öğenin parametrelerini ve durumlarını listeler.
Alan kesme noktası
Alan ayrılma noktası, uygulamanız bir kullanabilirsiniz.
İstisna ayrılma noktası
İstisna duraklatma noktası, bir istisna oluştuğunda uygulamanızın yürütülmesini duraklatır.

Yalnızca belirli koşullar karşılandığında yürütmeyi duraklatacak koşullu kesme noktaları ayarlayabilirsiniz. Ayrıca askıya almadan Logcat'e yazan günlük ayrılma noktaları da ayarlayabilirsiniz. birkaç adım var. Bu sayede, kodunuzu günlük ifadeleriyle doldurmaktan kaçınabilirsiniz.

Satır ayrılma noktası eklemek için aşağıdaki adımları uygulayın:

  1. Yürütmeyi duraklatmak istediğiniz kod satırını bulun.
  2. Söz konusu kod satırının sol kenar boşluğunu tıklayın veya imleci satıra yerleştirip Control+F8 (MacOS'te Command+F8) tuşlarına basın.
  3. Uygulamanız zaten çalışıyorsa Android işlemine hata ayıklayıcı ekle'yi tıklayın. . Hata ayıklamayı başlatmak için Hata ayıkla'yı tıklayın.

Şekil 5'te gösterildiği gibi, bir kesme noktası belirlediğinizde çizginin yanında kırmızı bir nokta görünür.

Şekil 5. Belgenin yanında kırmızı bir nokta satıra ekleyin.

Kod yürütmeniz kesme noktasına ulaştığında Android Studio, uygulamanızın yürütmesini duraklatır.

Uygulamanın durumunu belirlemek için: şu araçları kullanın:

  • Bir değişkenin nesne ağacını incelemek için Değişkenler görünümünde değişkeni genişletin. Değişkenler görünümü görünmüyorsa Düzen Ayarları'nı tıklayın ve değişkenler seçeneğinin işaretli olduğundan emin olun.

  • Bir yöntem girmeden koddaki bir sonraki satıra geçmek için Atla'yı tıklayın.

  • Bir yöntem çağrısının içindeki ilk satıra geçmek için Adım ile

  • Mevcut yöntemin dışında bir sonraki satıra geçmek için Adım Çıkış .

  • Uygulamayı normal şekilde çalıştırmaya devam etmek için Programı Devam Ettir'i tıklayın .

Projenizde yerel kod kullanılıyorsa varsayılan olarak Otomatik Olarak Algıla hata ayıklama türü, hem Java hata ayıklayıcıyı hem de LLDB'yi uygulamanıza iki ayrı işlem olarak ekler. Uygulamanızı yeniden başlatmadan veya ayarları değiştirmeden Java ve C/C++ durma noktalarını inceleme arasında geçiş yapabilirsiniz.

Not: Android Studio'nun C veya C++ kodunuzdaki ayrılma noktalarını algılaması için Otomatik Olarak Algıla, Yerel veya Çift. Hata ayıklama yapılandırmanızı düzenleyerek Android Studio'nun kullandığı hata ayıklama türünü değiştirebilirsiniz. Alıcı: Farklı hata ayıklama türleri hakkında daha fazla bilgi edinmek için Diğer hata ayıklama türlerine tabidir.

Android Studio, uygulamanızı hedef cihazınıza dağıttığında Hata Ayıklama penceresi, Şekil 6'da gösterildiği gibi her hata ayıklayıcı işlemi için bir sekme veya hata ayıklama oturumu görünümüyle açılır.

Şekil 6. LLDB kullanarak yerel kodda hata ayıklama.
  1. Android Studio, <your-module> sekmesi ayrılma noktası ekleyin. Çerçeveler, Değişkenler ve İzleyiciler bölmeleri de kullanılabilir ve Java kodunda hata ayıklama işlemi yapıyormuşsunuz gibi çalışır.

    LLDB oturum görünümünde Mesaj dizileri bölmesi kullanılamaz ancak Çerçeveler bölmesinde bulunan listeyi kullanarak uygulama işlemlerinize erişebilirsiniz. Bunlar hakkında daha fazla bilgi hata ayıklama penceresi çerçeveleri ve değişkenleri inceleyebilir.

    Not: Android sistemi, yerel kodunuzdaki bir kesme noktasını incelerken uygulamanızın Java ikili programını çalıştıran sanal makineyi askıya alır. Bu, doğal kodunuzdaki bir kesme noktasını incelerken Java hata ayıklayıcıyla etkileşime geçemeyeceğiniz veya Java hata ayıklayıcı oturumunuzda herhangi bir durum bilgisi alamayacağınızdan

  2. Android Studio, Java hata ayıklayıcısı çalıştırıldığında <your-module>-java sekmesi kodda bir ayrılma noktası ile karşılaştığından emin olmanız gerekir.
  3. LLDB ile hata ayıklama yaparken komut satırı seçeneklerini LLDB'ye iletmek için LLDB oturumu görünümündeki LLDB terminalini kullanabilirsiniz. Belirli bir her hata ayıklamaya başladığınızda LLDB'nin yürütmesini istediğiniz komutlar uygulamanızın hata ayıklayıcısının videonuza eklenmesinden hemen önce veya hemen sonra işlemi için bu komutları hata ayıklama yapılandırmanıza ekleyin.

C/C++ kodunda hata ayıklama yaparken, uygulamanız belirli bir bellek bloğuyla etkileşime geçtiğinde uygulama işleminizi askıya alabilecek gözlem noktaları adı verilen özel türde kesme noktaları da ayarlayabilirsiniz. Daha fazla bilgi edinmek için izleme noktası ekleme ile ilgili bölüme bakın.

Kesme noktalarını görüntüleme ve yapılandırma

Tüm kesme noktalarını görüntülemek ve kesme noktası ayarlarını yapılandırmak için hata ayıklama penceresinde Kesme noktalarını görüntüle'yi tıklayın. Şekil 7'de gösterildiği gibi, Kesme noktaları penceresi görüntülenir.

Şekil 7. Kesme noktaları penceresinde mevcut tüm kesme noktaları listelenir ve her birinin davranış ayarları yer alır.

Kesme noktaları penceresi, bölmedeki listeden her kesme noktasını etkinleştirmenizi veya devre dışı bırakmanızı sağlar. Bir kesme noktası devre dışı bırakılırsa Android Studio, uygulamanız bu kesme noktasına ulaştığında uygulamanızı duraklatmaz.

Şu listeden bir ayrılma noktası seçin: listesini tıklayın. Bir kesme noktasını ilk başta devre dışı olacak şekilde yapılandırabilir ve farklı bir kesme noktasına ulaşıldığında sistemin bunu etkinleştirmesini sağlayabilirsiniz. Ayrıca bir kesme noktasının, isabet. İstisnalar için kesme noktası ayarlamak istiyorsanız kesme noktaları listesinde İstisna Kesme Noktaları'nı seçin.

Tüm kesme noktalarını geçici olarak devre dışı bırakmak için Ayrılma Noktalarının Sesini Kapat'ı tıklayın. Hata ayıklama penceresi. Yeniden etkinleştirmek için tekrar tıklayın.

Pencere çerçevelerini hata ayıklama

Hata Ayıklama Aracı penceresindeki Çerçeveler bölmesi, geçerli kesme noktasına ulaşılmasına neden olan yığın çerçevesini incelemenize olanak tanır. Bu durumda, yığın çerçevesinde gezinmenizi ve incelemenize ve ayrıca mesaj dizileri.

İleti dizisi seçmek için ileti dizisi seçiciyi kullanın tıklayın ve yığın çerçevesini görüntüleyin. Çerçevedeki öğeleri tıklayın tıklayın. Ayrıca ileti dizisini özelleştirip Çerçeveler kılavuzunu inceleyin.

Değişkenleri inceleme

Hata Ayıklayıcı penceresindeki Değişkenler bölmesi, Sistem, uygulamanızı bir kesme noktasında durdurduğunda ve Çerçeveler bölmesinden bir kare seçin. Değişkenler bölmesi, statik yöntemleri ve/veya seçili karede bulunan değişkenleri kullanarak ad hoc ifadeleri değerlendirmenize de olanak tanır.

Nesne ağacına (uygulamada hata ayıklanırken) ifade eklemek için:

.
8.Şekil Hata ayıklama penceresindeki nesne ağacı ve ifade giriş kutusu.
  1. İzlenecek veya gösterilecek ifadeyi girin
  2. Saatlere ekle'yi tıklayın veya ifadeyi bir kez değerlendirmek için Enter tuşuna basın.

Alternatif olarak, nesne ağacı izlemek istediğiniz ifadeyi içeriyorsa "İzlenen ifade" olarak eklemek için ağacın en üstüne koyun.

İzlenen ifadeler, kesme noktalarına ulaşıldığında veya kodunuzda adım atıldığında güncellenir.

Değerlendirilen ifadeler siz manuel olarak oluşturulana kadar nesne ağacının en üstünde başka bir ifadeyi değerlendirin veya kodunuzda adım adım ilerleyin.

İzlenen bir ifadeyi nesne ağacından kaldırmak için ifadeyi sağ tıklayın, ardından Saati Kaldır'ı tıklayın.

Dikkat edilmesi gereken noktalar ekleme

C/C++ kodunda hata ayıklama yaparken, uygulamanız belirli bir bellek bloğuyla etkileşime geçtiğinde uygulama işleminizi askıya alabilecek gözlem noktaları adı verilen özel kesme noktası türleri ayarlayabilirsiniz. Örneğin, bir bellek blokuna iki işaretçi ayarlayın ve iki işaretçi de izleme noktasını tetikler.

Android Studio'da, belirli bir değişkeni seçerek çalışma zamanında bir izleme noktası oluşturabilirsiniz ancak LLDB, izleme noktasını yalnızca sistemin bu değişkene ayırdığı bellek bloğuna atar, değişkenin kendisine değil. Bu, İzlemeler bölmesine değişken eklemekten farklıdır. İzlemeler bölmesine eklediğiniz değişkenin değerini gözlemleyebilirsiniz ancak sistem, bellekte değişkenin değerini okuduğunda veya değiştirdiğinde uygulamanızın işlemini askıya alamazsınız.

Not: Uygulama işleminiz bir işlevden çıktığında ve sistem, yerel değişkenlerinin bellekteki ayrılmış alanını kaldırdığında bu değişkenler için oluşturduğunuz izleme noktalarını yeniden atamanız gerekir.

İzleme noktası ayarlamak için aşağıdaki koşulları karşılamanız gerekir:

  • Hedef fiziksel cihazınız veya emülatörünüz x86 veya x86_64 CPU kullanıyor. Cihazınızda ARM CPU kullanılıyorsa değişkeninizin bellekteki adresinin sınırını 32 bit işlemciler için 4 bayt veya 64 bit işlemciler için 8 bayt olacak şekilde ayarlamanız gerekir. Yerel kodunuzda bir değişkeni hizalamak için aşağıdaki gibi değişken yavaşlatmada __attribute__((aligned(num_bytes))) değerini belirtin:
    // For a 64-bit ARM processor
    int my_counter __attribute__((aligned(8)));
  • Daha önce üç veya daha az izleme noktası atadınız. Yalnızca Android Studio x86 veya x86_64 hedef cihazlarda dört adede kadar izleme noktasını destekler. Diğer cihazlar daha az izleme noktası destekleyebilir.

Not: 32 bit ARM ABI'leriyle uygulamanızda hata ayıklama yaparken, bir izleme noktası eklemek veya değerlerini incelemek için fareyle koddaki değişkenlerin üzerine gelmek kilitlenmeye neden olabilir. Geçici çözüm olarak 64 bit ARM, x86 veya x86_64 ikililerini kullanarak hata ayıklama yapın. Bu sorun, gelecekteki bir Android Studio sürümünde düzeltilecektir.

Şartları karşılıyorsanız aşağıdaki adımları uygulayarak bir izleme noktası ekleyebilirsiniz:

  1. Uygulamanız bir ayrılma noktasında askıya alınmış durumdayken LLDB oturum görünümünüzdeki Değişkenler bölmesi.
  2. Kopyalamak istediğiniz bellek bloğunu kaplayan bir değişkeni sağ tıklayın izleyin ve İzleme Noktası Ekle'yi seçin.

    Şekil 9. Bellekteki bir değişkene izleme noktası ekleyin.
  3. Şekil 9'da gösterildiği gibi, izleme noktanızı yapılandırmak için bir iletişim kutusu görüntülenir.

    İzleme noktanızı aşağıdaki seçeneklerle yapılandırın:

    • Etkin: Bilgilendirmek istiyorsanız bu seçeneğin işaretini kaldırın. Android Studio, siz ayarı değiştirene kadar izleme noktasını yoksayar. Android Studio, daha sonra erişebilmeniz için izleme noktanızı kaydeder.
    • Askıya alma: Android sistemi, varsayılan olarak bir izleme noktasına atadığınız bir hafıza bloğuna eriştiğinde uygulamanızın işlemini askıya alır. Bu davranışı istemiyorsanız bu seçeneğin işaretini kaldırın. Bu sayfada, sistem izleme noktanızla etkileşime geçtiğinde davranışı özelleştirmek için kullanabileceğiniz ek seçenekler gösterilir: İletiyi konsola kaydet ve İlgili öğeye dokunulduğunda kaldır.
    • Erişim Türü: Uygulamanızın Okuma veya Yazma işlemlerini yapmaya çalıştığında izleme noktasını belleğin değişkene göre ayrılmasını sağlar. İzleme noktanızı okuma veya yazma işleminde tetiklemek için Herhangi biri'ni seçin.
  4. Bitti'yi tıklayın.

Tüm izleme noktalarınızı görüntülemek ve izleme noktası ayarlarını yapılandırmak için Kırma Noktalarını Göster'i tıklayın. simgesini tıklayın. İlgili içeriği oluşturmak için kullanılan Kesme noktaları iletişim kutusu Şekil 10'da gösterildiği gibi görünür.

Şekil 10. Kesme noktaları iletişim kutusunda, izleme noktaları ve her biri için davranış ayarlarını içerir.

İzleme noktanızı ekledikten sonra, uygulamanızın işlemini devam ettirmek için hata ayıklama penceresindeki Programı Devam ettir'i tıklayın. Uygulamanız, önceden gördüğünüz bir bellek blokuna erişmeye bir izleme noktası ayarladıysanız, Android sistemi uygulama işleminizi askıya alır uygulamanızın indirdiği kod satırının yanında izleme noktası simgesi görünür son olarak yürütülür.

Şekil 11. Android Studio, uygulamanız bir izleme noktası tetiklemeden hemen önce yürütülür.

Kaynak değeri görüntüleme biçimini görüntüleme ve değiştirme

Hata ayıklama modunda, kaynak değerlerini görüntüleyebilir ve Java veya Kotlin kodunuzdaki değişkenler için farklı bir görüntüleme biçimi seçebilirsiniz. Değişkenler sekmesi görüntülenirken ve bir çerçeve seçiliyken aşağıdakileri yapın:

  1. Değişkenler listesinde, kaynak satırında herhangi bir yeri sağ tıklayarak liste dışı bırakmalısınız.
  2. Listeden Şöyle göster'i ve kullanmak istediğiniz biçimi seçin.

    Kullanılabilir biçimler, seçtiğiniz kaynağın veri türüne bağlıdır. Aşağıdaki seçeneklerden birini veya daha fazlasını görebilirsiniz:

    • Sınıf: Sınıf tanımını görüntüleyin.
    • toString: Görüntüleme dizesi biçimini gösterir.
    • Nesne: Nesne (sınıfın bir örneği) tanımını görüntüleyin.
    • Dizi: Dizi biçiminde görüntülenir.
    • Zaman damgası: Tarihi ve saati şu şekilde görüntüleyin: yyyy-aa-gg ss:dd:ss.
    • Otomatik: Android Studio, veri türüne göre en iyi biçimi seçer.
    • İkili: Sıfırları ve birleri kullanarak ikili değeri görüntüleyin.
    • MeasureSpec: Üst öğeden seçili alt öğeye aktarılan değerdir. MeasureSpec başlıklı makaleyi inceleyin.
    • On altılık: On altılık değer olarak görüntülenir.
    • Primitif: Temel veri türünü kullanarak sayısal bir değer olarak görüntüleyin.
    • Tam sayı: Integer türündeki sayısal bir değer olarak gösterilir.

Özel biçim oluşturmak için aşağıdakileri yapın:

  1. Kaynak değerini sağ tıklayın.
  2. Görünüm olarak'ı seçin.
  3. Oluştur'u seçin.
  4. Java Veri Türü Oluşturucuları iletişim kutusu görüntülenir. Şu adresteki talimatları uygulayın: Java Veri türü oluşturucuları.