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 ayrılma noktaları belirleyin.
  • 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ıklamaya 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 cihazda cihaz geliştiricisinde hata ayıklamayı etkinleştirmeniz gerekir seçenekleri bulabilirsiniz.
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ıklaması gereken yeni derleme türlerini tanımlarsanız debuggable true eklemeniz gerekir ekleyin:

Eski

android {
    buildTypes {
        customDebugType {
            debuggable true
            ...
        }
    }
}

Kotlin

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ıklamak istediğiniz bir kitaplık modülüne de bağlıysa hata ayıklama sembollerini koruyabilmesi için debuggable true ile paketlenmelidir. Uygulama projenizin hata ayıklaması yapılabilir varyantlarının kitaplık modülü kullanıyorsanız kitaplığınızın varsayılan olmayan sürümlerini yayınlayabilirsiniz.

Hata ayıklamayı başlat

Aşağıdaki şekilde bir hata ayıklama oturumu başlatabilirsiniz:

  1. Uygulamanızın kodunda ayırma 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ış bir cihazınız yoksa USB ile bir cihaz bağlama, kablosuz ağ üzerinden bir cihaz bağlayın veya Android Emülatör.

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

    Uygulamanız cihazda zaten çalışıyorsa bu işlemi isteyip istemediğinizi soran bir iletişim kutusu Çalıştır'dan Hata Ayıklama'ya geçin. Hata ayıklamaya başlanması için cihazın yeniden başlatılması gerekir. Alıcı: aynı örnek çalışmaya devam ediyorsa Hata Ayıklamayı İptal Et'i tıklayın ve hata ayıklayıcıyı çalışan bir uygulamaya ekleyin. Aksi halde Android Studio bir APK oluşturur, bunu bir hata ayıklama anahtarıyla imzalar, seçtiğiniz cihaza yükler ve çalıştırır.

    Şu durumda: projenize C ve C++ kodunu ekleyin, Android Studio, Hata Ayıklama aracında LLDB hata ayıklayıcı'yı da çalıştırır penceresini açın.

  4. Hata ayıklama penceresi açık değilse Görünüm > Araç Pencereleri > Hata ayıkla, veya araç pencere çubuğunda Hata ayıkla simgesini tıklayın.

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

Uygulamanız halihazırda cihazınızda çalışıyorsa hata ayıklamaya uygulamanızı aşağıdaki şekilde yeniden başlatın:

  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 rootlanmış bir cihaz kullanıyorsanız şunu kontrol edebilirsiniz: Tüm işlemleri görmek için Tüm işlemleri göster'i tıklayın. Root erişimli bir cihazda ise bu, cihaz üzerinde çalışan işlemlerdir. Ancak rootlanmamış bir cihazda bu işlem yalnızca bir süreçtir.
    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 ekleme sonrası komutlarını ve dizinleri kullanır.
    3. Mevcut bir çalıştırma/hata ayıklamanız yoksa Yeni Oluştur'u seçin. Bu seçim, Hata Ayıklama Türü'nü etkinleştirir. farklı bir hata ayıklama türü seçebileceğiniz menüsü. Ölçüt Varsayılan olarak, Android Studio en iyi hata ayıklama türünü seçmek için "Otomatik Olarak Hata Ayıklama" türünü kullanır projenizin Java veya C/C++ kodu içerip içermediğine bağlı olarak sizin için hata ayıklayıcı seçeneği
  3. Tamam'ı tıklayın.

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

Cihaz Gezgini'ndeki İşlemler sekmesi (Görünüm > Araç Penceresi > Cihaz Gezgini) hata ayıklaması yapılabilecek işlemlerin bir listesini içerir. 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 Bkz. Ayrılma noktalarıyla çalışma
  2. Mesaj dizisi seçici
  3. Değerlendirme ve izleme ifadesi girişi. Değişkenleri inceleme bölümüne bakın.
  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, tüm nesnelerin ve hata ayıklayıcı, bu hata ayıklayıcıya ulaşana kadar çöplerin toplanmadığını bilir. bağlantı kesilir. Bu, çalışırken bir yandan da nesne hata ayıklayıcı bağlandı. Örneğin, hata ayıklayıcı çalışan bir iş parçacığı görürse ilişkilendirilmiş Thread nesne, iş parçacığı sona ermiş olsa bile hata ayıklayıcı bağlantısı kesilene kadar atık toplanmaz.

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üzenle Yapılandırmalar. Hata ayıklayıcıyı, yeni bir hata ayıklayıcıyı seçtiğinizde görünen iletişim kutusundan da seçebilirsiniz. Çalıştır > Hata ayıklayıcıyı Android işlemine ekleyin.

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

Otomatik Olarak Algıla
. Android Studio'nun otomatik olarak en iyi seçeneği belirlemesini istiyorsanız bu hata ayıklama türünü seçin girin. Örneğin, herhangi bir C veya C++ kodunuz varsa Android Studio, otomatik olarak İkili hata ayıklama aracını kullanır. tü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++ koduyla kullanılabilir)
. Kodunuzdaki hataları ayıklamak için 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ıklamak istiyorsanız otomatik olarak algıla veya ikili hata ayıklama türünde.

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

  • Cihaz, run-as özelliğini 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ı girin. Öğe run-as destekliyorsa komut hata olmadan döndürecektir.

  • Cihazda ptrace etkin.

    ptrace öğesinin etkin olup olmadığını kontrol etmek için ADB'de aşağıdaki komutu çalıştırın kabuk seçin:

    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 pencere başlığının sağındaki iki sekmeye dikkat edin. Uygulamada hem Java hem de C++ kodu bulunduğundan bir sekmede yerel kodu ve diğeri, Java kodunda hata ayıklama için -java ile belirtildiği gibi.

Şekil 3. Yerel kod ve sekme hata ayıklama sekmesi kullanın.

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 ç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, hata ayıklama sırasında derleyici optimizasyonlarını devre dışı bırakmanız gerekir yerel kodunuzdur.

Sistem günlüğünü kullan

Sistem günlüğü, siz uygulamanızda hata ayıklarken sistem mesajlarını gösterir. Bu mesajlarda şunlar bulunur: bilgileri alır. Bir web sitesini ziyaret etmek için 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 nasıl etkileşim kurduğunu gösterir. 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 edinmek için bkz. Logcat ile günlük yazma ve görüntüleme

Aşağıdaki örnekte, önceki durumun geçerli olup olmadığını belirlemek için günlük mesajlarını nasıl ekleyebileceğinizi gösteren etkinliğiniz başladığında bilgileri kullanılabilir:

Kotlin

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
    ...
  }
}

Java

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:

Kotlin

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

Java

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üle

Hata ayıklama ve diğer sistem mesajlarını, gösterildiği gibi Logcat penceresinde görüntüleyebilir ve filtreleyebilirsiniz görebilirsiniz. Ö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 bkz. Logcat ile günlük yazma ve görüntüleme

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 satır ayrılma noktasıdır girin. 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.
Yöntem ayrılma noktası
Yöntem ayrılma noktası, belirli bir uygulamaya girdiğinde veya belirli bir değerden çıktığında uygulamanızın yürütülmesini duraklatır yöntemidir. 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 grafikte hata ayıklayıcı, composable işlevinin composable'a uymasını sağlamak için composable'ın parametrelerini ve yeniden bestelemeye hangi değişikliklerin sebep olmuş olabileceğini belirleyebilirsiniz.
Alan ayrılma noktası
Alan ayrılma noktası, uygulamanız bir kullanabilirsiniz.
İstisna ayrılma noktası
İstisna ayrılma noktası, bir istisna gerçekleştiğinde uygulamanızın yürütülmesini duraklatır.

Yalnızca belirli koşullarda yürütmeyi askıya alacak koşullu ayrılma noktaları ayarlayabilirsiniz karşılanıyor. Ayrıca askıya almadan Logcat'e yazan günlük ayrılma noktaları da ayarlayabilirsiniz. birkaç adım var. Bu, kodunuzun günlük ifadeleriyle dolmasını önlemeye yardımcı olabilir.

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. İlgili kod satırındaki sol oluğu tıklayın veya imleci satıra yerleştirin ve Control+F8 tuşlarına basın (macOS'te, Command+F8).
  3. Uygulamanız zaten çalışıyorsa Android işlemine hata ayıklayıcı ekle'yi tıklayın. . Aksi durumda, hata ayıklamaya başlamak için Hata ayıkla'yı tıklayın. .

Şekil 5'te gösterildiği gibi, bir ayrılma noktası ayarladığınızda ç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 ayrılma noktasına ulaştığında Android Studio, uygulamanızın yürütülmesini duraklatır.

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

  • Bir değişken için nesne ağacını incelemek için onu Değişkenler görünümünde genişletin. Eğer Değişkenler görünümü görünmüyorsa Düzen Ayarları'nı tıklayın. ve değişkenler işaretli olmalıdır.

  • Yöntem girmeden koddaki sonraki satıra geçmek için Adım En az .

  • 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ısını hem de LLDB'yi uygulamanıza iki ayrı daha fazla bilgi edineceksiniz. Java ve C/C++ ayrılma noktalarını denetleme arasında geçiş yapabilirsiniz Bu sayede uygulamanızı yeniden başlatmanıza veya ayarlarınızı değiştirmenize gerek kalmaz.

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 gösterildiği gibi her hata ayıklayıcı işlemi için bir sekme veya hata ayıklama oturum görünümüyle açılır (Şekil 6.)

Ş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 Saat bölmeleri de kullanılabilir ve her zaman olduğu gibi çalışır. Java kodunda hata ayıklaması yapıldı.

    İleti dizileri bölmesi kullanılamıyor olsa da Uygulama işlemlerinize erişmek için "LLDB oturum" görünümünde listesine eklemeniz gerekir. Bunlar hakkında daha fazla bilgi hata ayıklama penceresi çerçeveleri ve değişkenleri inceleyebilir.

    Not: Yerel kodunuzdaki bir ayrılma noktasını incelerken Android sistemi, uygulamanızın Java'sını çalıştıran sanal makineyi askıya alır bayt kodu ile eşdeğerdir. Bu, Java ile etkileşimde bulunamayacağınız anlamına gelir. hata ayıklayıcı veya Java hata ayıklayıcınızdan herhangi bir durum bilgisi alın oturumu gerçekleştirirken dikkatli olun.

  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ıklarken şu sayfadaki LLDB terminalini kullanabilirsiniz: Komut satırı seçeneklerini LLDB'ye iletmek için LLDB oturum görünümü. Belirli bir her hata ayıklamaya başladığınızda LLDB'nin yürütmesini istediğiniz komutlar uygulamanızı, hata ayıklayıcının dosyanıza 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ıklarken özel ayrılma noktası türlerini, izleme noktaları olarak adlandırılan bir araç kullanıyorsanız uygulamanız çalışırken uygulama işleminizi askıya alabilir. belirli bir bellek bloğuyla etkileşime girer. 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 ayrılma noktalarını görüntülemek ve kesme noktası ayarlarını yapılandırmak için Ayrılma noktalarını göster Hata ayıklama penceresi. Kesme noktaları penceresi görünür, gösterildiği gibidir.

Şekil 7. Kesme noktaları penceresi, ziyaret edilen mevcut tüm ve her biri için davranış ayarlarını içerir.

Kesme noktaları penceresi, liste halinde görebilirsiniz. Bir ayrılma noktası devre dışı bırakılırsa Android Studio o ayrılma noktasına ulaştığında uygulamanızı duraklatabilirsiniz.

Şu listeden bir ayrılma noktası seçin: listesini tıklayın. Devre dışı bırakılacak bir ayrılma noktası yapılandırabilirsiniz ve farklı bir ayrılma noktası isabet etmesinden sonra sistemin bunu etkinleştirmesini sağlayın. Ayrıca bir kesme noktasının, isabet. Herhangi bir istisna için ayrılma noktası ayarlamak üzere İstisna Kesme noktaları listesindeki ayrılma noktaları'nı tıklayın.

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çevelerinde hata ayıklama

Hata Ayıklayıcı penceresinde Çerçeveler bölmesi, geçerli ayrılma noktasının isabetine neden olan yığın çerçevesidir. Bu durumda, yığın çerçevesinde gezinmenizi ve incelemenize ve ayrıca ileti 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 de anlık ifadeleri statik yöntemler ve/veya değişkenin kullanılabilir olduğunu varsayalım.

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, ayrılma noktalarına isabet ettiğinizde veya kodunuzda ilerlediğinizde 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.

İzleme noktaları ekle

C/C++ kodunda hata ayıklarken "C/C++" kodunuzda izleme noktaları belirli bir bellek bloğuyla etkileşime girer. Örneğin, bir bellek blokuna iki işaretçi ayarlayın ve iki işaretçi de izleme noktasını tetikler.

Android Studio'da şu seçeneği belirleyerek çalışma zamanı sırasında bir izleme noktası oluşturabilirsiniz: ancak LLDB izleme noktasını yalnızca değişkenin kendisine değil, söz konusu değişkene ayırdığı belleğe dikkat edin. Bu , Saatler bölmesine bir değişken eklemekten farklıdır. Bu işlem, askıya almanıza izin vermese de bir değişkenin değerini gözlemlemeniz sistem, bellekteki değerini okuduğunda veya değiştirdiğinde uygulanan uygulama işlemidir.

Not: Uygulama işleminiz bir işlevden ve sistemden çıktığında yerel değişkenlerini bellekten ayırıyorsa, varsa kalan tüm değişkenleri izleme noktalarını kullanabilirsiniz.

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

  • Hedeflediğiniz fiziksel cihaz veya emülatörde x86 ya da x86_64 CPU kullanılıyor. Eğer bir ARM CPU kullanıyorsa bu modellerin sınırını değişkeninin bellekteki adresini 4 bayt olarak (32 bit işlemciler için) veya 8 bayt olacak şekilde 64 bit işlemciler için kullanılır. Yerel kodunuzdaki bir değişkeni hizalamak için __attribute__((aligned(num_bytes))) değişkeni yavaşlamasını görebilirsiniz:
    // 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ını destekleyebilir.

Not: 32 bit ARM ABI'leri ile uygulamanızın hatalarını ayıklarken, izleme noktası ekler veya fareyle üzerine geldiğinizde değişkenlerin üzerinde çalışır. bir kilitlenmeye neden olabilir. Geçici bir çözüm olarak 64 bit ARM kullanarak hata ayıklayın: x86 veya x86_64 ikili programları. Bu sorun, Android Studio'nun yeni sürümünde düzeltilecektir.

Şartları karşılıyorsanız aşağıdaki şekilde 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: Varsayılan olarak Android sistemi uygulamanızı askıya alır. bir bellek blokuna eriştiğinde bunu işleme alabilir. Bu davranışı istemiyorsanız bu seçeneğin işaretini kaldırın. Bu Parametreler etkinken davranışı özelleştirmek için kullanabileceğiniz sistem izleme noktanızla etkileşime geçtiğinde: Mesajı konsola kaydet ve vurulduğunda kaldır seçenekleri yer alı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ı tetikleme okuma veya yazma işlemi için Herhangi biri'yi 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 noktasını ekledikten sonra Programı Devam Ettir'i tıklayın. uygulamanızı devam ettirmek için Hata Ayıklama penceresinde bahsedeceğim. 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 değişkenlerini kullanarak oluşturma işlemini manuel olarak yapabilirsiniz. Değişkenler sekmesi görüntüleniyor ve seçip şunları 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. Listede View as'i (Farklı görüntüle) seçin ve kullanmak istediğiniz biçimi belirleyin.

    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 iletilen değer. MeasureSpec başlıklı makaleyi inceleyin.
    • Onaltılık: Onaltılık değer olarak gösterilir.
    • Primitif: Temel veri türünü kullanarak sayısal bir değer olarak görüntüleyin.
    • Tam sayı: Türün sayısal değeri olarak görüntülenir. Integer.

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

  1. Kaynak değerini sağ tıklayın.
  2. Şu kullanıcı olarak görüntüle'yi 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ı.