Android Studio, aşağıdakileri ve daha fazlasını yapmanıza olanak tanıyan bir hata ayıklayıcı sunar:
- Uygulamanızın hatalarını ayıklayacağınız cihazı seçin.
- Java, Kotlin ve C/C++ kodunuzda ayrılma noktaları ayarlayın.
- Çalışma zamanında değişkenleri inceleme ve ifadeleri değerlendirme.
Bu sayfa temel hata ayıklayıcı işlemleriyle ilgili talimatları içerir. Daha fazla belge için IntelliJ IDEA hata ayıklama belgelerine de 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 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.
Genellikle,
build.gradledosyasında görünür olmasa da her Android Studio projesinde bulunan varsayılan "hata ayıklama" varyantını seçebilirsiniz. Ancak hata ayıklaması yapılabilecek yeni derleme türleri tanımlarsanız derleme türüne
debuggable trueeklemeniz gerekir:
- Uygulamanızın kodunda ayrılma noktaları ayarlayın.
- Araç çubuğunda, hedef cihaz menüsünden uygulamanızın hatalarını ayıklayacağınız cihazı seçin.
- Araç çubuğunda Hata ayıkla'yı tıklayın.
Uygulamanız zaten cihazda çalışıyorsa Çalıştır'dan Hata Ayıklama'ya geçiş yapmak isteyip istemediğinizi soran bir iletişim kutusu gösterilir. Hata ayıklamaya başlamak için cihazın yeniden başlatılması gerekir. Uygulamanın aynı örneğini çalışır durumda tutmak için Hata Ayıklamayı İptal Et'i tıklayın ve bunun yerine hata ayıklayıcıyı çalışan bir uygulamaya ekleyin. Aksi takdirde, Android Studio bir APK oluşturur, hata ayıklama anahtarıyla imzalar, seçtiğiniz cihaza yükler ve çalıştırır.
- Hata ayıklama penceresi açık değilse Görünüm > Araç Pencereleri > Hata Ayıkla'yı seçin veya araç penceresi çubuğunda Hata Ayıkla'yı tıklayın.
- Hata ayıklayıcıyı Android işlemine ekle'yi tıklayın.
- İşlem Seçin iletişim kutusunda hata ayıklayıcıyı eklemek istediğiniz işlemi seçin.
- Emülatör veya rootlanmış bir cihaz kullanıyorsanız tüm işlemleri görmek için Tüm işlemleri göster'i işaretleyebilirsiniz. Root erişimli cihazlarda, bu cihazda çalışan tüm işlemler gösterilir. Ancak rootlanmamış bir cihazda bu işlem yalnızca hata ayıklanabilir işlemleri gösterir.
- Android Hata Ayıklayıcı Ayarlarını Kullan menüsünden mevcut bir çalıştırma/hata ayıklama yapılandırmasını seçebilirsiniz. C ve C++ kodları için bu sayede LLDB başlangıç komutlarını, LLDB ekleme sonrası komutlarını ve simge dizinlerini mevcut bir yapılandırmada yeniden kullanabilirsiniz.
- 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. Varsayılan olarak Android Studio, projenizin Java veya C/C++ kodu içerip içermediğine bağlı olarak sizin için en iyi hata ayıklayıcı seçeneğini belirlemek amacıyla "Otomatik Olarak Algıla" hata ayıklama türünü kullanır.
- Tamam'ı tıklayın.
Hata Ayıklama penceresi görünür.
- Yürütme ve gezinme araç çubuğu Bkz. Ayrılma noktalarıyla çalışma
- Mesaj dizisi seçici
- Değerlendirme ve izleme ifadesi girişi. Değişkenleri inceleme bölümünü inceleyin.
- Yığın ekranı
- Değişkenler bölmesini tıklayın. Değişkenleri inceleme bölümünü inceleyin.
- Otomatik Olarak Algıla
- Android Studio'nun hatalarını ayıkladığınız kod için otomatik olarak en iyi seçeneği belirlemesini istiyorsanız bu hata ayıklama türünü seçin. Örneğin, projenizde C veya C++ kodu varsa Android Studio otomatik olarak İkili 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ılmış kodda hata ayıklamak istiyorsanız bu hata ayıklama türünü seçin. Yalnızca Java hata ayıklayıcısı, yerel kodunuzda ayarladığınız ayrılma noktalarını veya izlemeleri yok sayar.
- Yalnızca Yerel (yalnızca C/C++ koduyla kullanılabilir)
-
Kodunuzda hata ayıklamak için yalnızca LLDB kullanmak istiyorsanız bu hata ayıklama türünü seçin. Bu hata ayıklama türü kullanılırken Java hata ayıklayıcı oturum görünümü kullanılamaz. Varsayılan olarak LLDB yalnızca yerel kodunuzu inceler ve Java kodunuzdaki kesme noktalarını yoksayar. Java kodunuzda da hata ayıklamak 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özelliğini destekleyip desteklemediğini kontrol etmek için cihazınıza bağlı ADB kabuğunda şu komutu çalıştırın:
run-as your-package-name pwd
your-package-nameyerine uygulamanızın paket adını yazın. Cihaz,
run-asözelliğini destekliyorsa komut hata olmadan dönecektir.
Cihazda
ptraceetkin.
ptraceözelliğinin etkinleştirilip etkinleştirilmediğini kontrol etmek için cihazınıza bağlı ADB kabuğunda şu komutu çalıştırın:
sysctl kernel.yama.ptrace_scope
ptraceetkinleştirilirse komut,
0değerini veya bir
unknown keyhatasını yazdırır.
ptraceetkinleştirilmemişse
0dışında bir değer yazdırır.
-
- Dual (Java + Native) - 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, uygulama işleminize hem Java hata ayıklayıcısını hem de LLDB'yi ekler. Böylece, uygulamanızı yeniden başlatmadan veya hata ayıklama yapılandırmanızı değiştirmeden hem Java hem de yerel kodunuzdaki kesme noktalarını inceleyebilirsiniz.
Şekil 2'de, Hata Ayıklama penceresi başlığının sağındaki iki sekmeyi bulun. Uygulama hem Java hem de C++ koduna sahip olduğundan, sekmelerden biri yerel kodda, diğeri de Java kodunda hata ayıklama için kullanılır. -java ile gösterilir.
- Satır ayrılma noktası
- En yaygın tür, belirli bir kod satırında uygulamanızın yürütülmesini duraklatan satır ayrılma noktasıdır. Duraklatılmış durumdayken değişkenleri inceleyebilir, ifadeleri değerlendirebilir ve ardından, çalışma zamanı hatalarının nedenlerini belirlemek için yürütme satır satır devam edebilirsiniz.
- Yöntem ayrılma noktası
- Yöntem ayrılma noktası, uygulamanız belirli bir yönteme girdiğinde veya belirli bir 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, çalışma zamanı hatalarının nedenlerini belirlemek için yürütme satır satır devam edebilirsiniz. composable bir işlevde ayrılma noktası ayarladığınızda hata ayıklayıcı, yeniden derlemeye neden olabilecek değişikliklerin tanımlanmasına yardımcı olmak için composable'ın parametrelerini ve durumlarını listeler.
- Alan ayrılma noktası
- Alan ayrılma noktası, uygulamanız belirli bir alandan veri okuduğunda veya alana yazma işlemi yaparken uygulamanızın yürütülmesini duraklatır.
- İstisna kesme noktası
- İstisna ayrılma noktası, istisna durumunda uygulamanızın yürütülmesini duraklatır.
- Yürütmeyi duraklatmak istediğiniz kod satırını bulun.
- Söz konusu kod satırı boyunca sol oluğu tıklayın veya düzeltme işaretini satıra yerleştirin ve Control+F8 (macOS'te, Command+F8) tuşlarına basın.
- Uygulamanız zaten çalışıyorsa Android işlemine hata ayıklayıcı ekle'yi tıklayın . Aksi takdirde, hata ayıklamaya başlamak için Hata ayıkla'yı tıklayın.
-
Bir değişkenin nesne ağacını incelemek için onu Değişkenler görünümünde genişletin. Değişkenler görünümü görünmüyorsa Düzen Ayarları'nı tıklayın ve değişkenlerin işaretli olduğundan emin olun.
-
Yöntem girmeden kodda sonraki satıra geçmek için Adımı Sonrakine Geç'i tıklayın.
-
Bir yöntem çağrısının ilk satırına ilerlemek için Adım Adımı 'ı tıklayın.
-
Mevcut yöntemin dışındaki sonraki satıra geçmek için Çıkış'ı tıklayın.
-
Uygulamayı normal şekilde çalıştırmaya devam etmek için Programı Devam Ettir'i tıklayın .
- LLDB hata ayıklayıcısı C/C++ kodunuzda bir ayrılma noktasıyla karşılaştığında Android Studio <your-module> sekmesine geçer. Çerçeveler, Değişkenler ve İzlemeler bölmeleri de kullanılabilir ve tam olarak Java kodunda hata ayıkladığınızda olduğu gibi çalışır.
İş Parçacıkları bölmesi LLDB oturum görünümünde mevcut olmasa da, Çerçeveler bölmesindeki listeyi kullanarak uygulama işlemlerinize erişebilirsiniz. Pencere çerçevelerinde hata ayıklama ve değişkenleri inceleme bölümlerinde bu bölmeler hakkında daha fazla bilgi edinebilirsiniz.
Not: Android sistemi, yerel kodunuzdaki bir ayrılma noktasını denetlerken uygulamanızın Java bayt kodunu çalıştıran sanal makineyi askıya alır. Bu, yerel kodunuzda bir kesme noktasını denetlerken Java hata ayıklayıcısıyla etkileşimde bulunamayacağınız veya Java hata ayıklayıcı oturumunuzdan durum bilgisini alamayacağınız anlamına gelir.
- Java hata ayıklayıcısı, Java veya Kotlin kodunuzda bir ayrılma noktasıyla karşılaştığında Android Studio <your-module>-java sekmesine geçer.
- LLDB ile hata ayıklarken LLDB'ye komut satırı seçeneklerini iletmek için LLDB oturum görünümündeki LLDB terminalini kullanabilirsiniz. Uygulamanızdaki her hata ayıklama işlemine başladığınızda, hata ayıklayıcının uygulama işleminize bağlanmasından hemen önce veya hemen sonra LLDB'nin yürütmesini istediğiniz belirli komutlarınız varsa bu komutları hata ayıklama yapılandırmanıza ekleyebilirsiniz.
- İzlenecek veya gösterilecek ifadeyi girin
- Saatlere ekle'yi tıklayın veya ifadeyi bir kez değerlendirmek için Enter tuşuna basın.
- Hedef fiziksel cihazınız veya emülatörünüz x86 veya x86_64 CPU kullanıyor. Cihazınız bir ARM CPU kullanıyorsa bellekteki değişkeninizin adresinin sınırını 32 bit işlemciler için 4 bayt veya 64 bit işlemciler için 8 bayt olarak hizalamanız gerekir. Yerel kodunuzdaki bir değişkeni hizalamak için değişken yavaşlamasında aşağıda gösterildiği gibi
__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. Android Studio, x86 veya x86_64 hedef cihazlarda en fazla dört izleme noktasını destekler. Diğer cihazlar daha az izleme noktasını destekleyebilir.
- Uygulamanız bir ayrılma noktasında askıya alındığında LLDB oturum görünümünüzdeki Değişkenler bölmesine gidin.
-
İzlemek istediğiniz bellek bloğunu kaplayan bir değişkeni sağ tıklayın ve İzleme Noktası Ekle'yi seçin.
İzleme noktanızı yapılandırmanız için bir iletişim kutusu görüntülenir (Şekil 9'da gösterildiği gibi).
İzleme noktanızı aşağıdaki seçenekleri kullanarak yapılandırın:
- Etkin: Android Studio'ya, ayarı değiştirene kadar izleme noktasını yoksaymasını bildirmek istiyorsanız bu seçeneğin işaretini kaldırın. Android Studio, izleme noktanızı daha sonra erişebilmeniz için kaydeder.
- Askıya Alma: Varsayılan olarak, uygulamanız bir izleme noktasına atadığınız bellek bloğuna eriştiğinde uygulamanız işlemi askıya alır. Böyle bir davranış istemiyorsanız bu seçeneğin işaretini kaldırın. Sistem izleme noktanızla etkileşime geçtiğinde davranışı özelleştirmek için kullanabileceğiniz ek seçenekler gösterilir: Mesajı konsola kaydet ve İsabet olduğunda kaldır.
- Erişim Türü: Uygulamanızın değişkene ayırdığı bellek bloğuna Okuma veya Yazma eylemlerinde bulunduğunda, uygulamanızın izleme noktanızı tetikleyip tetiklemeyeceğini seçin. İzleme noktanızı okuma veya yazma sırasında tetiklemek için Herhangi biri'yi seçin.
- Bitti'yi tıklayın.
- Değişkenler listesinde, listeyi görüntülemek için kaynak satırında herhangi bir yeri sağ tıklayın.
- Listede, Görüntüleme şekli'ni 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: Dize biçimini görüntüleyin.
- Nesne: Nesneyi (bir sınıfın örneği) görüntüleyin.
- Dizi: Dizi biçiminde görüntüler.
- 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ır ve bir kullanarak ikili değeri gösterir.
- MeasureSpec: Üst öğeden seçilen alt öğeye geçirilen değer.
İlgili konu:
MeasureSpec.
- Onaltılık: Onaltılık değer olarak gösterilir.
- Temel: Temel bir veri türü kullanarak sayısal değer olarak görüntüleyin.
- Tam sayı:
Integertüründe sayısal bir değer olarak gösterilir.
- Kaynak değerini sağ tıklayın.
- Şu kişi olarak görüntüle'yi seçin.
- Oluştur'u seçin.
- Java Veri Türü Oluşturucuları iletişim kutusu görüntülenir. Java Veri türü oluşturucuları ile ilgili talimatları uygulayın.
Modern
android { buildTypes { customDebugType { debuggable true ... } } }
Kotlin
android { buildTypes { create("customDebugType") { isDebuggable = true ... } } }
Bu özellik, C/C++ koduna sahip modüller için de geçerlidir.
Not:
jniDebuggable özelliği artık kullanılmamaktadır.
Uygulamanız, hata ayıklamak istediğiniz bir kitaplık modülüne bağlıysa kitaplığın hata ayıklama sembollerini koruması için bu kitaplığın da
debuggable true ile paketlenmesi gerekir.
Uygulama projenizin hata ayıklaması yapılabilir varyantlarının kitaplık modülünün hata ayıklaması yapılabilir varyantını almasını sağlamak için kitaplığınızın varsayılan olmayan sürümlerini yayınlayın.
Hata ayıklamaya başla
Hata ayıklama oturumunu aşağıdaki şekilde başlatabilirsiniz:
Hata ayıklayıcıyı çalışan bir uygulamaya ekleme
Uygulamanız zaten cihazınızda çalışıyorsa aşağıda açıklandığı şekilde uygulamanızı yeniden başlatmadan hata ayıklamaya başlayabilirsiniz:
Cihaz Gezgini'ndeki İşlemler sekmesinde (Görünüm > Araç Pencereleri > Cihaz Gezgini) hata ayıklanabilir işlemlerin listesi de bulunur. Buradan bir işlem seçip sonlandırma , zorla durdurma işlemi gerçekleştirebilir veya hata ayıklayıcıyı belirli bir işleme ekleyebilirsiniz.
Hata ayıklama penceresi
Hata ayıklama penceresi
Not: Android Studio hata ayıklayıcı ve çöp toplayıcı serbest bir şekilde entegre edilmiştir. Android sanal makinesi, hata ayıklayıcının farkında olduğu herhangi bir nesnenin, hata ayıklayıcının bağlantısı kesilene kadar atık toplanmayacağını garanti eder. Bu durum, hata ayıklayıcı bağlıyken nesne birikmesine neden olabilir. Örneğin, hata ayıklayıcı çalışan bir iş parçacığı görürse iş parçacığı sonlandırılmış olsa bile ilişkili
Thread nesnesi, hata ayıklayıcının bağlantısı kesilene kadar atık toplanmaz.
Hata ayıklayıcı türünü değiştirme
Java/Kotlin kodu ve C/C++ kodunda hata ayıklamak için farklı hata ayıklayıcı araçları gerekli olduğundan, Android Studio hata ayıklayıcı, kullanılacak hata ayıklayıcı türünü seçebilmenizi sağlar. Varsayılan olarak Android Studio, Otomatik Olarak Algıla hata ayıklayıcı türünü kullanarak projenizde algıladığı dillere göre hangi hata ayıklayıcının kullanılacağına karar verir.
Hata ayıklama yapılandırmasında hata ayıklayıcıyı manuel olarak seçmek için Çalıştır > Yapılandırmaları Düzenle'yi tıklayın. Çalıştır > Android işlemine hata ayıklayıcı ekle'yi tıkladığınızda görüntülenen iletişim kutusundan hata ayıklayıcıyı da seçebilirsiniz.
Kullanılabilir hata ayıklama türleri şunlardır:
Not: Derleyici tarafından optimize edilen yerel kodda hata ayıklarken şu uyarı mesajını alabilirsiniz:
This function was
compiled with optimizations enabled. Some debugger features may not be
available. Derleyici, optimizasyon işaretlerini kullanırken derlenen kodunuzda değişiklikler yaparak daha verimli çalışır. Bu durum, hata ayıklayıcının, optimize edilmiş derlenmiş kodu orijinal kaynak koduyla geri eşlemesini zorlaştırdığından hata ayıklayıcının beklenmeyen veya yanlış bilgiler bildirmesine neden olabilir.
Bu nedenle, yerel kodunuzda hata ayıklarken derleyici optimizasyonlarını devre dışı bırakmanız gerekir.
Sistem günlüğünü kullanma
Sistem günlüğü, uygulamanızda hata ayıklarken sistem mesajlarını gösterir. Bu mesajlar, cihazda çalışan uygulamalara ait bilgileri içerir. Uygulamanızda hata ayıklamak için sistem günlüğünü kullanmak istiyorsanız, uygulamanız geliştirme aşamasındayken kodunuzun günlük mesajları yazdığından ve istisnalar için yığın izlemeyi (stack trace) yazdırdığından emin olun.
Kodunuza günlük mesajları yazma
Kodunuza günlük mesajları yazmak için
Log sınıfını kullanın. Günlük mesajları, uygulamanızla etkileşim kurduğunuz sırada sistem hata ayıklama çıktısını toplayarak yürütme akışını anlamanıza yardımcı olur. Günlük mesajları, uygulamanızın hangi bölümünün başarısız olduğunu da gösterebilir. Günlük kaydı hakkında daha fazla bilgi için Logcat ile günlük yazma ve görüntüleme bölümüne bakın.
Aşağıdaki örnekte, etkinliğiniz başladığında önceki durum bilgilerinin kullanılabilir olup olmadığını belirlemek için günlük mesajlarını nasıl ekleyebileceğiniz gösterilmektedir:
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 */ } ... } }
Ayrıca, kodunuz geliştirme sırasında istisnaları yakalayabilir ve yığın izlemeyi sistem günlüğüne yazabilir:
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: Uygulamanızı yayınlamaya hazır olduğunuzda, hata ayıklama günlüğü mesajlarını ve yığın izleme yazdırma çağrılarını kodunuzdan kaldırın. Bunu yapmak için bir
DEBUG işareti ayarlayın ve hata ayıklama günlüğü mesajlarını koşullu ifadelerin içine yerleştirin.
Sistem günlüğünü görüntüleme
Hata ayıklamayı ve diğer sistem mesajlarını, Şekil 4'te gösterildiği gibi Logcat penceresinde görüntüleyebilir ve filtreleyebilirsiniz. Örneğin, çöp toplama gerçekleştiğinde mesajları veya
Log sınıfıyla uygulamanıza eklediğiniz mesajları görebilirsiniz.
Logcat'i kullanmak için hata ayıklamaya başlayın ve Logcat sekmesini seçin.
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.
Ayrılma noktalarıyla çalışma
Android Studio, farklı hata ayıklama işlemlerini tetikleyen kesme noktalarını destekler. Ayrılma noktasının birkaç türü vardır:
Yalnızca belirli koşullar karşılanırsa yürütmeyi askıya alacak koşullu kesme noktaları belirleyebilirsiniz. Ayrıca, yürütmeyi askıya almadan Logcat'e yazan günlük kaydı kesme noktaları da ayarlayabilirsiniz. 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:
Bir ayrılma noktası ayarladığınızda, Şekil 5'te gösterildiği gibi çizginin yanında kırmızı bir nokta görünür.
Kod yürütmeniz kesme noktasına ulaştığında, Android Studio uygulamanızın yürütülmesini duraklatır.
Uygulamanın durumunu tanımlamak için Debugger sekmesindeki araçları kullanın:
Projeniz herhangi bir yerel kod kullanıyorsa Otomatik Hata Ayıklamayı Algılama türü varsayılan olarak hem Java hata ayıklayıcısını hem de LLDB'yi uygulamanıza iki ayrı işlem olarak ekler. Uygulamanızı yeniden başlatmadan veya ayarları değiştirmeden Java'yı ve C/C++ kesme noktalarını denetleme 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 gibi LLDB'yi destekleyen bir hata ayıklama türü kullanmanız gerekir. Hata ayıklama yapılandırmanızı düzenleyerek Android Studio'nun kullandığı hata ayıklama türünü değiştirebilirsiniz. Farklı hata ayıklama türleri hakkında daha fazla bilgi edinmek için diğer hata ayıklama türlerini kullanmayla ilgili bölümü okuyun.
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.
C/C++ kodunda hata ayıklarken, uygulamanız belirli bir bellek bloğuyla etkileşimde bulunduğunda uygulama işleminizi askıya alabilecek, izleme noktaları adı verilen özel ayrılma noktası türleri de ayarlayabilirsiniz. Daha fazla bilgi edinmek için izleme noktaları ekleme konulu bölümü okuyun.
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. Ayrılma Noktaları penceresi, şekil 7'de gösterildiği gibi görünür.
Kesme noktaları penceresi, her bir ayrılma noktasını bölmedeki listeden etkinleştirebilmenizi veya devre dışı bırakabilmenizi sağlar. Bir ayrılma noktası devre dışı bırakılırsa Android Studio, bu kesme noktasına ulaştığında uygulamanızı duraklatmaz.
Listeden bir ayrılma noktası seçerek ayarlarını yapılandırın. Başlangıçta devre dışı bırakılacak bir ayrılma noktası yapılandırabilir ve farklı bir ayrılma noktası vurulduktan sonra sistemin bu özelliği etkinleştirmesini sağlayabilirsiniz. Ayrıca bir ayrılma noktasının isabet edildikten sonra devre dışı bırakılıp bırakılmayacağını da yapılandırabilirsiniz. Herhangi bir istisna için ayrılma noktası ayarlamak üzere kesme noktaları listesinde İstisna Ayrılma Noktaları'nı seçin.
Tüm kesme noktalarını geçici olarak devre dışı bırakmak için Hata Ayıklama penceresinde Kesme noktalarını yoksay'ı tıklayın. Yeniden etkinleştirmek için tekrar tıklayın.
Pencere çerçevelerinde hata ayıklama
Debugger penceresinde, Çerçeveler bölmesi geçerli kesme noktasının isabetli olmasına neden olan yığın çerçevesini incelemenize olanak tanır. Böylece, Android uygulamanızda yığın çerçevesinde gezinip bunları inceleyebilir, ayrıca iş parçacıkları listesini inceleyebilirsiniz.
İş parçacığı seçmek için iş parçacığı seçici menüsünü kullanın ve bunun yığın çerçevesini görüntüleyin. Kaynağı düzenleyicide açmak için çerçevedeki öğeleri tıklayın. Ayrıca iş parçacığı sunumunu özelleştirebilir ve Çerçeveleri İnceleme kılavuzunda açıklandığı gibi yığın çerçevesini dışa aktarabilirsiniz.
Değişkenleri inceleyin
Debugger penceresindeki Değişkenler bölmesi, sistem uygulamanızı bir kesme noktasında durdurduğunda ve Kareler bölmesinden bir kare seçtiğinizde değişkenleri incelemenize olanak tanır. Değişkenler bölmesi, seçili çerçevede bulunan statik yöntemler ve/veya değişkenler kullanarak anlık ifadeleri değerlendirmenize de olanak tanır.
Nesne ağacına ifade eklemek için (uygulamada hata ayıklanırken):
Alternatif olarak, nesne ağacı izlemek istediğiniz ifadeyi içeriyorsa bunu izlenen ifade olarak eklemek için ağacın üst kısmına sürükleyebilirsiniz.
İzlenen ifadeler, kesme noktalarına basıldığında veya kodunuzda ilerlediğinizde güncellenir.
Siz başka bir ifadeyi manuel olarak değerlendirene veya kodunuzda adım adım geçene kadar, değerlendirilen ifadeler nesne ağacının en üstünde görüntülenmeye devam eder.
İzlenen bir ifadeyi nesne ağacından kaldırmak için ifadeyi sağ tıklayın, ardından İzlemeyi Kaldır'ı tıklayın.
İzleme noktaları ekleyin
C/C++ kodunda hata ayıklarken uygulamanız belirli bir bellek bloğuyla etkileşim kurduğunda uygulama işleminizi askıya alabilecek, izleme noktaları adı verilen özel ayrılma noktası türleri ayarlayabilirsiniz. Örneğin, bir bellek bloğuna iki işaretçi ayarlar ve ona bir izleme noktası atarsanız bu bellek bloğuna erişmek için iki işaretçiden birini kullanmak izleme noktasını tetikler.
Android Studio'da, belirli bir değişkeni seçerek çalışma zamanı sırası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 atamaz. Bu, İzlemeler bölmesine değişken eklemekten farklıdır. Bu özellik, değişkenin değerini gözlemlemenizi sağlar ancak sistem, değişkenin bellekteki değerini okuduğunda veya değiştirirken uygulama işleminizi askıya almanıza izin vermez.
Not: Uygulama işleminiz bir işlevden çıktığında ve sistem, işlevin yerel değişkenlerini bellekten ayı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:
Not: Uygulamanızda 32 bit ARM ABI'leri ile hata ayıklarken izleme noktası eklemek veya değişkenlerin değerlerini incelemek için değişkenlerin üzerine fareyle gelmek kilitlenmeye neden olabilir. Geçici bir çözüm olarak, 64 bit ARM, x86 veya x86_64 ikili kodlarını kullanarak hata ayıklayın. Bu sorun, daha sonra kullanıma sunulacak Android Studio sürümünde düzeltilecektir.
Şartları karşılıyorsanız aşağıdaki şekilde izleme noktası ekleyebilirsiniz:
Tüm izleme noktalarınızı görüntülemek ve izleme noktası ayarlarınızı yapılandırmak için Hata Ayıklama penceresinde Kesme Noktalarını Görüntüle'yi tıklayın. Kesme noktaları iletişim kutusu Şekil 10'da gösterildiği gibi görünür.
İzleme noktanızı ekledikten sonra uygulama işleminizi devam ettirmek için Hata Ayıklama penceresinde Programı Devam Ettir'i tıklayın. Varsayılan olarak, uygulamanız izleme noktası ayarladığınız bir bellek bloğuna erişmeye çalışırsa Android sistemi, uygulama işleminizi askıya alır ve Şekil 11'de gösterildiği gibi uygulamanızın en son çalıştırdığı kod satırının yanında bir izleme noktası simgesi görünü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, Java veya Kotlin kodunuzdaki değişkenler için farklı görüntüleme biçimi seçebilirsiniz. Değişkenler sekmesi görüntülendiğinde ve bir çerçeve seçiliyken aşağıdakileri yapın:
Özel biçim oluşturmak için aşağıdakileri yapın: