nkk-gdb

NDK, komut satırı yerel hata ayıklama oturumu (eski adıyla gdb, şimdi lldb) 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 aşağıdaki koşulların karşılanması gerekir:

  • ndk-build komut dosyasını kullanarak uygulamanızı oluşturun. ndk-gdb komut dosyası, oluşturmak için eski make APP=<name> yönteminin kullanılmasını desteklemez.
  • android:debuggable özelliğini true olarak ayarlayan bir <application> öğesi ekleyerek AndroidManifest.xml dosyanızda uygulama hata ayıklamasını etkinleştirin.
  • Uygulamanızı Android 2.2 (Android API düzeyi 8) veya sonraki sürümlerde çalışacak şekilde derleyin.
  • Android 2.2 veya daha yeni sürümlerin yüklü olduğu bir cihazda veya emülatörde hata ayıklama 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'ta 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 dizin Örnek:

cd $PROJECT
$NDK/ndk-gdb

Burada $PROJECT, projenizin kök dizinini, $NDK ise NDK yükleme yolunuzu gösterir.

ndk-gdb çağrıldığında oturum, kaynak dosyalarınızı ve oluşturulan doğal kitaplıklarınızın simge/hata ayıklama sürümlerini arayacak şekilde yapılandırılır. ndk-gdb, uygulama işleminize başarıyla bağlandığında çeşitli sistem kitaplıklarını bulamadığına dair uzun bir hata mesajı dizisi gösterir. Barındırma makineniz, hedef cihazınızda bu kitaplıkların simge/hata ayıklama sürümlerini içermediğinden bu normaldir. Bu mesajları güvenle yoksayabilirsiniz.

Ardından ndk-gdb, normal lldb istemini gösterir.

ndk-gdb ile lldb ile yaptığınız gibi etkileşimde bulunursunuz. LLDB'yi bilmiyorsanız ancak GDB'yi biliyorsanız faydalı [GDB'den LLDB'ye komut haritasına](https://lldb.llvm.org/use/map.html) bakın.

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ıklama özelliğine sahip olarak beyan edilip edilmediğini kontrol eder.
  • Cihazdaki aynı paket adına sahip yüklü uygulamanın da hata ayıklama özelliğine sahip olup olmadığını kontrol eder.

Varsayılan olarak ndk-gdb, zaten çalışan bir başvuru sürecini arar ve bulamazsa hata mesajı gösterir. 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, sık kullanılan bazı anahtar kelimeler kısa açıklamalarla birlikte gösterilmektedir.

Tablo 1. Sık kullanılan ndk-gdb seçenekleri ve açıklamaları.

Bu seçenekle ndk-gdb'ü başlattığınızda uygulama manifest dosyanızda listelenen ilk başlatılabilir etkinlik başlatılır. Bir sonraki başlatılabilir etkinliği başlatmak için --launch=<name> simgesini kullanın. Başlatılabilir etkinliklerin listesini dökmek için komut satırından --launch-list komutunu çalıştırın.

Option Açıklama>
--verbose

Bu seçenek, derleme sistemine yerel hata ayıklama oturumu kurulumu hakkında ayrıntılı bilgi yazdırmasını söyler. Yalnızca hata ayıklayıcı uygulamaya bağlanamadığında ve ndk-gdb'ün gösterdiği hata mesajları yeterli olmadığında sorunlar için hata ayıklama gerekir.

--force Varsayılan olarak ndk-gdb, aynı cihazda zaten başka bir yerel hata ayıklama oturumu olduğunu tespit ederse işlemi durdurur. Bu seçenek, diğer oturumu sonlandırır ve yeni bir oturumla değiştirir. Bu seçeneğin, hata ayıklanan asıl uygulamayı kapatmadığını unutmayın. Uygulamayı ayrı olarak kapatmanız gerekir.
--start

ndk-gdb'ü başlattığınızda varsayılan olarak hedef cihazdaki uygulamanızın mevcut çalışan bir örneğine bağlanmaya çalışır. Hata ayıklama oturumundan önce uygulamayı hedef cihazda açıkça başlatmak için --start'ü kullanarak bu varsayılan davranışı geçersiz kılabilirsiniz.

--launch=<name>

Bu seçenek, uygulamanızdan belirli bir etkinliği başlatmanıza olanak tanıması dışında --start'e benzer. Bu özellik yalnızca manifest'inizde birden fazla başlatılabilir etkinlik tanımlanmışsa yararlıdır.

--launch-list

Bu kolaylık seçeneği, uygulama manifest dosyanızda bulunan tüm başlatılabilir etkinlik adlarının listesini yazdırır. --start, ilk etkinlik adını kullanır.

--project=<path> Bu seçenek, uygulama projesi dizinini belirtir. Önce proje dizinine geçmek zorunda kalmadan komut dosyasını başlatmak istiyorsanız bu yöntemden yararlanabilirsiniz.
--port=<port>

Varsayılan olarak ndk-gdb, hedef cihazda hata ayıklama yaptığı uygulamayla iletişim kurmak için yerel TCP bağlantı noktası 5039'u kullanır. Farklı bir bağlantı noktası kullanmak, aynı ana makineye bağlı farklı cihazlarda veya emülatörlerde çalışan programlarda yerel olarak hata ayıklamanıza olanak tanır.

--adb=<file>

Bu seçenek, adb aracının yürütülebilir dosyasını belirtir. Yalnızca yolunuzu bu yürütülebilir dosyayı içerecek şekilde ayarlamadıysanız gereklidir.

  • -d
  • -e
  • -s <serial>
  • Bu işaretler, aynı ada sahip adb komutlarına benzer. Ana makinenize bağlı birkaç cihaz veya emülatör varsa bu işaretleri ayarlayın. Bu kodların anlamları şu şekildedir:

    -d
    Tek bir fiziksel cihaza bağlanın.
    -e
    Tek bir emülatör cihazına bağlanın.
    -s <serial>
    Belirli bir cihaza veya emülatöre bağlanın. Burada <serial>, adb devices komutu tarafından listelenen cihazın adıdır.

    Alternatif olarak, belirli bir seçenek kullanmaya gerek kalmadan belirli bir cihazı listelemek için ADB_SERIAL ortam değişkenini tanımlayabilirsiniz.

  • --exec=<file>
  • -x <file>
  • Bu seçenek, ndk-gdb'e hata ayıklama işlemini yaptığı sürece bağlandıktan sonra <file>'te bulunan hata ayıklayıcı başlatma komutlarını çalıştırmasını söyler. Bir şeyleri tekrar tekrar yapmak istiyorsanız (ör. bir kesme noktası listesi oluşturmak ve ardından yürütmeyi otomatik olarak devam ettirmek) bu özellik kullanışlıdır.

    --nowait

    Hata ayıklayıcı bağlanana kadar Java kodunun duraklatılmasını devre dışı bırakın. Bu seçeneğin iletilmesi, hata ayıklayıcının erken kesme noktalarını kaçırmasına neden olabilir.

    --tui -t

    Mevcutsa metin kullanıcı arayüzünü etkinleştirin.

    --gnumake-flag=<flag>

    Bu seçenek, proje bilgileri için ndk-build sistemine sorgu gönderirken sisteme iletilecek ek bir işarettir (veya işaretler). Aynı komutta bu seçeneğin birden fazla örneğini kullanabilirsiniz.

    Not: Bu tablodaki son üç seçenek yalnızca ndk-gdb'nin Python sürümünde kullanılabilir.