nkk-gdb

NDK, bir komut dosyası başlatmak için ndk-gdb adlı bir kabuk komut dosyası komut satırı yerel hata ayıklama oturumu. GUI kullanmayı tercih eden kullanıcılar Android Studio kullanın.

Gereksinimler

Komut satırında yerel hata ayıklamanın ç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 eski make APP=<name> yönteminin kullanılmasını desteklemez.
  • AndroidManifest.xml dosyanıza bir android:debuggable özelliğini true olarak ayarlayan <application> öğesi.
  • 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 sürümleri çalıştıran bir cihazda ya da emülatörde hata ayıklayın. Hata ayıklama amacıyla, AndroidManifest.xml dosyanızda belirttiğiniz API düzeyi önemli değildir.
  • Uygulamanızı Unix kabuğunda geliştirin. Windows'da Cygwin kullanın veya deneysel ndk-gdb-py Python hakkında bilgi edindiniz.
  • 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 somut olarak ortaya koyar. Örnek:

cd $PROJECT
$NDK/ndk-gdb

Burada $PROJECT, projenizin kök dizinini, $NDK ise sizin projenizin kök dizinini işaret eder NDK yükleme yolu.

ndk-gdb yöntemini çağırdığınızda oturumu kaynak dosyalarınızı arayacak şekilde yapılandırır ve simge/hata ayıklama sürümleriyle birlikte sunulur. ndk-gdb, uzun bir dizi hata mesajı veriyorsa bulmanız gerekir. Bu normaldir çünkü ana makinenizde bu kitaplıkların hedef cihazınızda simge sürümlerini/hata ayıklama sürümlerini kullanın. Bunları güvenle yoksayabilirsiniz mesaj.

Ardından, ndk-gdb normal GDB istemi görüntüler.

ndk-gdb ile, GNU GDB ile aynı şekilde etkileşim kurarsınız. Örneğin, şunları yapabilirsiniz: ayrılma noktalarını ayarlamak için b <location> ve c ("devam" için) öğesini kullanın devam ettirebilirsiniz. Kapsamlı bir komut listesi için şuraya bakın: GDB kılavuzu. Örneğin, LLDB Debugger'ı kullanıyorsanız --lldb seçeneğinin yanındaki kutuyu işaretleyin.ndk-gdb

GDB isteminden çıktığınızda, hata ayıkladığınız uygulama işleminin duracağını unutmayın. Bu bir gdb sınırlamasıdır.

ndk-gdb, birçok hata koşulunu ele alır ve aşağıdaki durumlarda bilgilendirici bir hata mesajı gösterir bulur. 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ıklanabilir olarak beyan edilip edilmediğini kontrol eder.
  • Cihazda aynı paket adına sahip yüklü uygulamanın da hata ayıklaması yapılabilir.

ndk-gdb varsayılan olarak zaten çalışmakta olan bir uygulama işlemini arar ve hatası verir. Ancak, --start veya Hata ayıklama işleminden önce etkinliğinizi otomatik olarak başlatmak için --launch=<name> seçeneği kabul edilir. Daha fazla bilgi için Seçenekler bölümüne göz atın.

Seçenekler

Seçeneklerin tam listesini görmek için komut satırına ndk-gdb --help yazın. Tablo 1 en sık kullanılanlardan bazılarını kısa açıklamalarla birlikte gösterir.

Tablo 1. Yaygın ndk-gdb seçenekleri ve açıklamaları.

ndk-gdb bu seçenek belirtildiğinde, listelenen ilk başlatılabilir etkinliği başlatır kullanabilirsiniz. Bir sonraki başlatılabilir öğeyi başlatmak için --launch=<name> kullanın etkinliği'ne dokunun. Başlatılabilir etkinliklerin listesinin dökümünü almak için komuttan --launch-list komutunu çalıştırın satırında görünür.

Option Açıklama>
--lldb

Ayarlanırsa komut dosyası, oturum için gdb yerine LLDB Debugger'ı kullanır.

--verbose

Bu seçenek, derleme sistemine yerel hata ayıklama ile ilgili ayrıntılı bilgileri yazdırmasını söyler oturum kurulumu. Bu işlem, yalnızca hata ayıklayıcının sunucuya bağlanamadığı durumlarda, ndk-gdb uygulamasının gösterdiği hata mesajları yeterli değil.

--force ndk-gdb, başka bir yerel hata ayıklama oturumunun zaten olduğunu tespit ederse varsayılan olarak işlemi iptal eder olduğunu fark edebilirsiniz. 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ı kapatmadığını ve bu işlemi sonlandırmanız gerektiğini unutmayın. ayrı olarak düzenleyebilirsiniz.
--start

ndk-gdb uygulamasını başlattığınızda, varsayılan olarak uygulamanızı sağlar. Aşağıdaki işlemler için --start kullanarak bu varsayılan davranışı geçersiz kılabilirsiniz: Hata ayıklama oturumundan önce uygulamayı hedef cihazda açıkça başlatma

--launch=<name>

Bu seçenek --start işlevine benzer, ancak belirli bir seçeneği başlatmanıza olanak tanır. etkinliği Google'a gönderebilirsiniz. Bu özellik yalnızca manifest dosyanızda birden fazla aktiviteleri kapsar.

--launch-list

Bu pratik seçenek, uygulama manifest'inde yer alır. --start, ilk etkinlik adını kullanıyor.

--project=<path> Bu seçenek, uygulama proje dizinini belirtir. Bu, özellikle de ilk kurum içi komut dosyasını yüklemeniz gerekir.
--port=<port>

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

--adb=<file>

Bu seçenek, adb yürütülebilir bir araç. 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. Aşağıdaki durumlarda bu işaretleri ayarlayın: ana makinenize bağlı çeşitli cihazlar veya emülatörler. Bu terimlerin anlamları aşağıdaki gibidir:

    -d
    Tek bir fiziksel cihaza bağlanın.
    -e
    Tek bir emülatör cihaza bağlanma.
    -s <serial>
    Belirli bir cihaza veya emülatöre bağlanın. İşte <serial>, cihazın adı komutu adb devices komutunda gösterildiği gibidir.

    Alternatif olarak, belirli bir aracı listelemek için ADB_SERIAL ortam değişkenini tanımlayabilirsiniz. hem de belirli bir seçeneğe gerek kalmadan.

  • --exec=<file>
  • -x <file>
  • Bu seçenek, ndk-gdb hizmetine şurada bulunan GDB başlatma komutlarını çalıştırmasını söyler: Hata ayıklama işlemine bağlandıktan sonra <file>. Bu özellik bir şeyleri tekrar tekrar yapmak istiyorsanız (örneğin, bir ayrılma noktası listesi ayarlayıp daha sonra otomatik olarak yürütülür.

    --nowait

    GDB bağlanana kadar Java kodunu duraklatmayı devre dışı bırakın. Bu seçeneğin iletilmesi, hata ayıklayıcının çalıştırılmasına neden olabilir. kaçırabilirsiniz.

    --tui -t

    Varsa Metin Kullanıcı Arayüzünü etkinleştirin.

    --gnumake-flag=<flag>

    Bu seçenek, ndk-build sistemi şu durumda: sorgulamak isteyebilirsiniz. Şurada bu seçeneğin birden çok örneğini kullanabilirsiniz: gerekir.

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

    İ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ının hatalarını düzgün şekilde ayıklayamıyor. Hata ayıklayıcı yalnızca ana iş parçacığında hata ayıklayabilir (ABD, tamamen) diğer ileti dizilerinin yürütülmesini yoksayar.

    Ana olmayan bir iş parçacığında yürütülen bir işleve ayrılma noktası yerleştirirseniz program çıkar ve GDB şu mesajı gösterir:

    Program terminated with signal SIGTRAP, Trace/breakpoint trap.
          The program no longer exists.