2011-11-25 16 views
11

Próbuję dołączyć aplikację ndk-gdb do mojej aplikacji na Androida.Nie można podłączyć programu ndk-gdb do aplikacji Android.

Używam jest Android-ndk-r6b, a urządzeniem jest Android 2.3, Samsung Galaxy S II.

Śledziłem wszelkie kroki w tym przykładzie Click here for the example

A także Próbowałem z jednej aplikacji, gdy próbuję dołączyć gdb z innej aplikacji, ale gadatliwym pokazując, że jest ona zawsze zaczyna dołączonym do pierwszego samej aplikacji

Found package name: <1st attached package name> 

próbowałem uruchomić ndk-gdb użyciu tej komendy po raz pierwszy:

ndk-gdb --start --force --verbose 

próbowałem dołączyć do innej aplikacji za pomocą polecenia poniżej, ale nie jest w stanie osiągnąć sukces:

ndk-gdb --launch=com.example.hellogdbserver.HelloGdbServer --force --verbose 

Ja zawsze otrzymuję poniżej błędu z pierwszej aplikacji:

ERROR: Non-debuggable application installed on the target device.Please re-install the debuggable version! 

Jest to kompletny log shell które Dostaję

sh-4.1$ ndk-gdb --verbose --start --force 
    Android NDK installation path: /cygdrive/c/Android/android-ndk 
    Using default adb command: /cygdrive/c/Android/android-sdk-windows/platform-tools/adb 
    ADB version found: Android Debug Bridge version 1.0.26 
    Using final ADB command: '/cygdrive/c/Android/android-sdk-windows/platform-tools/adb' 
    Using auto-detected project path: /cygdrive/d/EclipseTestWorkspace/hello-gdbserver 
    Found package name: com.example.hellogdbserver 
    ABIs targetted by application: armeabi 
    Device API Level: 10 
    Device CPU ABIs: armeabi-v7a armeabi 
    Compatible device ABI: armeabi 
    Found debuggable flag: true 
    Found device gdbserver: /data/data/com.example.hellogdbserver/lib/gdbserver 
    Using gdb setup init: /cygdrive/d/EclipseTestWorkspace/hello-gdbserver/libs/armeabi/gdb.setup 
    Using toolchain prefix: /cygdrive/c/Android/android-ndk/toolchains/arm-linux-androideabi-4.4.3/prebuilt/windows/bin/arm-linux-androideabi- 
    Using app out directory: /cygdrive/d/EclipseTestWorkspace/hello-gdbserver/obj/local/armeabi 
    ERROR: Could not extract package's data directory. Are you sure that 
      your installed application is debuggable? 
    sh-4.1$ 

Proszę dać mi znać, jak mogę rozwiązać powyższy błąd, a także w jaki sposób dołączyć do nowego pakietu.

Mój telefon nie jest zakorzeniony. Mam nadzieję, że to nie wpłynie na gdb.

To też nie było pomocne Link to similar problem. Ponieważ mój telefon jest nowym telefonem i nie ma żadnej aplikacji, poza bieżącą rozwijającą się aplikacją. (Tylko pakiety, które przychodzą wraz z telefonem Samsung są obecne. Nie aplikacja jest pobierana z rynku).

Dzięki & Pozdrawiam,
SSuman185


Proszę przejść przez odnośnik Debugging native code in android app using the android ndk gdb

+0

Widząc to samo na moim Samsung Infuse. Czy znalazłeś rozwiązanie tego? – Androider

+0

Czy próbowałeś ustawić android: debuggable = "true"> w swoim manifeście? – Lennart

+0

Tak ustawiłem już tę flagę na true - Suman

Odpowiedz

5

Najpierw upewnij się, że tworzysz debugowalną wersję aplikacji. Plik AndroidManifest.xml powinien zawierać tag android: debuggable = "true".

Można również sprawdzić, znajdując plik APK w katalogu bin, rozpakowując go (jest to plik ZIP o zmienionej nazwie) i upewniając się, że folder lib \ armeabi zawiera plik gdbserver.

Jeśli spełnione są powyższe warunki, spróbuj zainstalować pakiet na urządzeniu ręcznie:

<android-sdk>\platform-tools\adb.exe install -r <your-package-file.APK> 

Proszę uważnie obserwować wyjście adb.exe. Jeśli wyświetla błąd, może to wyjaśnić Twój problem.

+0

Nie widziałem adbservera plik w moim folderze lib/armeabi. Ustawiam android: debuggable = "true" i uruchamiam ndk-build NDK_DEBUG = 1 i ustawiam APP_OPTIM: = debugowanie w Application.mk. Czy masz jakieś sugestie, w jaki sposób zapewnić, że adbserver zostanie skompilowany i umieszczony w folderze armeabi? –

6

Ten problem pojawi się, jeśli spróbujesz debugować projekt biblioteki. ndk-gdb nie może dołączyć do projektu, który nie jest "główny".

Musisz umieścić swój kod JNI w początkowym projekcie aplikacji.

3

upewnij się że masz APP_OPTIM w JNI/Application.mk zestaw do debugowania

+1

co robi ta flaga? Czy różni się od NDK_DEBUG = 1? –

Powiązane problemy