NDK, komut satırı yerel hata ayıklama oturumu başlatmak için ndk-gdb
adlı bir kabuk komut dosyası içerir. GUI kullanmayı tercih eden kullanıcılar bunun yerine Android Studio'da hata ayıklama ile ilgili dokümanları okumalıdır.
Şartlar
Komut satırı yerel hata ayıklama özelliğinin çalışması için şu koşulların karşılanması gerekir:
ndk-build
komut dosyasını kullanarak uygulamanızı oluşturun.ndk-gdb
komut dosyası, derleme için eskimake APP=<name>
yönteminin kullanılmasını desteklemez.android:debuggable
özelliğinitrue
olarak ayarlayan bir<application>
öğesi ekleyerekAndroidManifest.xml
dosyanızda uygulama hata ayıklamayı etkinleştirin.- Uygulamanızı Android 2.2 (Android API düzeyi 8) veya sonraki sürümlerde çalışacak şekilde oluşturun.
- Android 2.2 veya sonraki bir sürümü çalıştıran bir cihazda veya emülatörde hata ayıklayın.
Hata ayıklama amacıyla
AndroidManifest.xml
dosyanızda belirttiğiniz hedef API düzeyi önemli değildir. - Uygulamanızı bir Unix kabuğunda geliştirin. Windows'da Cygwin veya deneysel
ndk-gdb-py
Python uygulamasını kullanın. - GNU Make 3.81 veya sonraki bir sürümü kullanın.
Kullanım
ndk-gdb
komut dosyasını çağırmak için uygulama dizinine veya altındaki bir dizine geçin. Örneğin:
cd $PROJECT $NDK/ndk-gdb
Burada $PROJECT
, projenizin kök dizinine, $NDK
ise NDK yükleme yolunuza işaret eder.
ndk-gdb
çağırdığınızda oturum, kaynak dosyalarınızı ve oluşturduğunuz yerel kitaplıkların simge/hata ayıklama sürümlerini arayacak şekilde yapılandırılır. ndk-gdb
, başvuru sürecinize başarıyla eklendiğinde uzun bir dizi hata mesajı verir. Bu mesaj, çeşitli sistem kitaplıklarının bulunamadığını belirtir. Ana makineniz, hedef kitaplığınızda bu kitaplıkların sembol/hata ayıklama sürümlerini içermediğinden bu durum normaldir. Bu mesajları göz ardı edebilirsiniz.
Ardından ndk-gdb
normal bir GDB istemi görüntüler.
ndk-gdb
ile GNU GDB ile aynı şekilde etkileşim kurarsınız. Örneğin, kesme noktası ayarlamak için b <location>
tuşunu, yürütmeyi devam ettirmek için c
("devam" düğmesini) kullanabilirsiniz. Kapsamlı bir komut listesi için GDB kılavuzunu inceleyin. LLDB Hata Ayıklayıcısı'nı kullanmayı tercih ederseniz ndk-gdb
komut dosyasını çağırırken --lldb
seçeneğini kullanın.
GDB isteminden çıktığınızda hata ayıklamayı gerçekleştirdiğiniz uygulama işleminin durdurulduğunu unutmayın. Bu davranış bir Gdb sınırlamasıdur.
ndk-gdb
birçok hata durumunu ele alır ve bir sorun bulursa bilgilendirici bir hata mesajı gösterir. Bu kontroller, aşağıdaki koşulların karşılandığından emin olmayı içerir:
- ADB'nin yolunuzda olup olmadığını kontrol eder.
- Uygulamanızın manifest dosyasında hata ayıklaması yapılıp yapılmadığını kontrol eder.
- Aynı paket adına sahip yüklü uygulamanın cihazda da hata ayıklaması yapılıp yapılmadığını kontrol eder.
Varsayılan olarak, ndk-gdb
zaten çalışan bir uygulama işlemini arar ve bulamazsa bir hata gösterir. Bununla birlikte, hata ayıklama oturumundan önce etkinliğinizi otomatik olarak başlatmak için --start
veya --launch=<name>
seçeneğini kullanabilirsiniz. Daha fazla bilgi için Seçenekler bölümüne bakın.
Seçenekler
Seçeneklerin tam listesini görmek için komut satırına ndk-gdb --help
yazın. Tablo 1'de, kısa açıklamaların yanı sıra daha yaygın olarak kullanılan bir dizi tablo gösterilmektedir.
Tablo 1. Yaygın ndk-gdb seçenekleri ve açıklamaları.
ndk-gdb
bu seçenekle başlatıldığında, uygulama manifestinizde listelenen ilk başlatılabilir etkinlik başlatılır. Bir sonraki başlatılabilir etkinliği başlatmak için --launch=<name>
uygulamasını kullanın. Başlatılabilir etkinliklerin listesini çıkarmak için komut satırından --launch-list
öğesini çalıştırın.
Option | Açıklama> |
---|---|
--lldb |
Ayarlanırsa komut dosyası oturum için gdb yerine LLDB Hata Ayıklayıcı'yı kullanır. |
--verbose |
Bu seçenek, derleme sistemine, yerel hata ayıklama oturumu kurulumu hakkında ayrıntılı bilgi yazdırmasını bildirir. Yalnızca hata ayıklayıcı uygulamaya bağlanamadığında ve |
--force |
Varsayılan olarak, ndk-gdb aynı cihazda başka bir yerel hata ayıklama oturumu çalıştırıldığını tespit ederse iptal edilir. Bu seçenek, diğer oturumu sonlandırır ve bunu yeni bir oturumla değiştirir.
Bu seçeneğin, hata ayıklamakta olan gerçek uygulamayı sonlandırmadığını, ayrıca ayrı olarak sonlandırmanız gerektiğini unutmayın. |
--start |
|
--launch=<name> |
Bu seçenek, |
--launch-list |
Bu kolaylık seçeneği, uygulama manifestinizde bulunan başlatılabilir tüm etkinlik adlarının listesini yazdırır. |
--project=<path> |
Bu seçenek, uygulama projesi dizinini belirtir. Komut dosyasını önce proje dizininde değiştirmek zorunda kalmadan başlatmak istiyorsanız kullanışlıdır. |
--port=<port> |
Varsayılan olarak |
--adb=<file> |
Bu seçenek, yürütülebilir adb aracını belirtir. Yalnızca yolunuzu bu yürütülebilir dosyayı içerecek şekilde ayarlamadıysanız gerekir. |
-d -e -s <serial> |
Bu işaretler, aynı adlara sahip adb komutlarına benzer. Ana makinenize bağlı birkaç cihazınız veya emülatörleriniz varsa bu işaretleri ayarlayın. Bu kodların anlamları aşağıdaki gibidir:
Alternatif olarak, |
--exec=<file> -x <file> |
Bu seçenek, |
--nowait |
GDB bağlanana kadar Java kodunu duraklatmayı devre dışı bırak. Bu seçeneğin iletilmesi, hata ayıklayıcının erken ayrılma noktalarını kaçırmasına neden olabilir. |
--tui
-t |
Metin Kullanıcı Arayüzünü (varsa) etkinleştirin. |
--gnumake-flag=<flag> |
Bu seçenek, proje bilgileri için sorgu ararken |
Not: Bu tablodaki son üç seçenek yalnızca ndk-gdb
ürününün Python sürümü içindir.
Mesaj dizisi desteği
Uygulamanız Android 2.3'ten (API düzeyi 9) eski bir platformda çalışıyorsa ndk-gdb
yerel mesaj dizilerinde hata ayıklama işlemini doğru şekilde yapamaz. Hata ayıklayıcı yalnızca ana iş parçacığının hata ayıklamasını yapabilir.
Abd diğer ileti dizilerinin yürütülmesini tamamen yoksayar.
Ana olmayan bir iş parçacığında yürütülen bir işleve ayrılma noktası yerleştirirseniz programdan çıkış yapılır ve GDB aşağıdaki mesajı görüntüler:
Program terminated with signal SIGTRAP, Trace/breakpoint trap. The program no longer exists.