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'daki hata ayıklama dokümanlarını okumalıdır.
Şartlar
Komut satırında yerel hata ayıklamanın çalışması için şu gereksinimlerin karşılanması gerekir:
ndk-build
komut dosyasını kullanarak uygulamanızı derleyin.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ıklamasını etkinleştirin.- Uygulamanızı Android 2.2 (Android API düzeyi 8) veya sonraki bir sürümde çalışacak şekilde oluşturun.
- Android 2.2 veya sonraki sürümleri çalıştıran bir cihazda ya da emülatörde hata ayıklayın.
Hata ayıklama açısından
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 bunun altındaki herhangi bir dizine geçin. Örneğin:
cd $PROJECT $NDK/ndk-gdb
Burada $PROJECT
, projenizin kök dizinini, $NDK
ise NDK yükleme yolunuzu işaret eder.
ndk-gdb
yöntemini çağırdığınızda, oturumu kaynak dosyalarınızı ve oluşturulan yerel kitaplıklarınızın simge/hata ayıklama sürümlerini arayacak şekilde yapılandırır. Başvuru sürecinize başarılı bir şekilde eklendiğinde ndk-gdb
, çeşitli sistem kitaplıklarını bulamadığını belirten uzun bir dizi hata mesajı verir. Ana makineniz hedef cihazınızda bu kitaplıkların simge/hata ayıklama sürümlerini içermediğinden bu durum normaldir. Bu mesajları göz ardı edebilirsiniz.
Ardından ndk-gdb
normal GDB istemi görüntüler.
ndk-gdb
ile GNU GDB ile aynı şekilde etkileşimde bulunursunuz. Örneğin, kesme noktaları ayarlamak için b <location>
ve yürütmeyi devam ettirmek için c
("devam" için) kullanılabilir. Kapsamlı komut listesi için GDB kılavuzuna bakın. LLDB Debugger'ı kullanmayı tercih ederseniz ndk-gdb
komut dosyasını çağırırken --lldb
seçeneğini kullanın.
GDB isteminden çıktığınızda, hata ayıklamakta olduğunuz uygulama işleminin duracağını unutmayın. Bu davranış bir gdb sınırlamasıdır.
ndk-gdb
, birçok hata koşulunu yönetir ve bir sorun bulursa bilgilendirici bir hata mesajı görüntüler. Bu kontroller, aşağıdaki koşulların yerine getirildiğinden emin olmayı içerir:
- ADB'nin yolunuzda olup olmadığını kontrol eder.
- Uygulamanızın, manifest dosyasında hata ayıklaması yapılabilir olarak tanımlanıp tanımlanmadığını kontrol eder.
- Cihazda, aynı paket adına sahip yüklü uygulamanın da hata ayıklamaya uygun olup olmadığını kontrol eder.
Varsayılan olarak ndk-gdb
, çalışan bir uygulama işlemini arar ve bulamazsa hata görüntüler. Ancak 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 yaygın şekilde kullanılan bazı yöntemler kısa açıklamalarla birlikte gösterilmektedir.
ndk-gdb
bu seçenek belirtilerek 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>
öğesini kullanın. Başlatılabilir etkinliklerin listesinin dökümünü almak için komut satırından --launch-list
komutunu çalıştırın.
Option | Açıklama> |
---|---|
--lldb |
Ayarlanırsa komut dosyası, oturum için gdb yerine LLDB Hata Ayıklayıcısını kullanır. |
--verbose |
Bu seçenek, derleme sistemine yerel hata ayıklama oturumu kurulumuyla ilgili ayrıntılı bilgileri 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 oturumunun çalıştığını tespit ederse işlemi iptal eder. Bu seçenek diğer oturumu sonlandırır ve yeni bir oturumla değiştirir.
Bu seçeneğin, hata ayıklaması yapılan asıl uygulamayı kaldırmadığını ve bu uygulamanın ayrı olarak sonlandırılması gerektiğini unutmayın. |
--start |
|
--launch=<name> |
Bu seçenek, uygulamanızdan belirli bir etkinlik başlatmanıza olanak tanıması dışında |
--launch-list |
Bu kolaylık seçeneği, uygulama manifestinizde bulunan tüm başlatılabilir etkinlik adlarının listesini yazdırır. |
--project=<path> |
Bu seçenek, uygulama projesi dizinini belirtir. Bu, önce proje dizinine değişiklik yapmak zorunda kalmadan komut dosyasını başlatmak istiyorsanız kullanışlıdır. |
--port=<port> |
|
--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 belirlemediyseniz gereklidir. |
-d -e -s <serial> |
Bu işaretler, aynı ada sahip adb komutlarına benzer. Ana makinenize bağlı birkaç cihazınız veya emülatörünüz varsa bu işaretleri ayarlayın. Bunların anlamları aşağıdaki gibidir:
Alternatif olarak, belirli bir seçeneğe gerek kalmadan belirli bir cihazı listelemek için |
--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 kesme noktalarını atlamasına neden olabilir. |
--tui
-t |
Metin Kullanıcı Arayüzü'nü etkinleştirin (kullanılabiliyorsa). |
--gnumake-flag=<flag> |
Bu seçenek, proje bilgileri için sorgulanırken |
Not: Bu tablodaki son üç seçenek yalnızca ndk-gdb
'in Python sürümü içindir.
İleti dizisi desteği
Uygulamanız Android 2.3'ten (API düzeyi 9) daha eski bir platformda çalışıyorsa ndk-gdb
, yerel iş parçacıklarında doğru şekilde hata ayıklama yapamaz. Hata ayıklayıcı yalnızca ana iş parçacığında hata ayıklayabilir. Abd, diğer iş parçacıklarının 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 program çıkar ve GDB aşağıdaki mesajı görüntüler:
Program terminated with signal SIGTRAP, Trace/breakpoint trap. The program no longer exists.