подключение к родному приложению Android с помощью gdb закрывает приложение на устройстве

#android #gdb #android-ndk

#Android #gdb #android-ndk

Вопрос:

Я пытаюсь отладить свое родное приложение, скомпилированное с помощью ndk-r6. Когда я пытаюсь запустить ndk-gdb, чтобы подключить отладчик к процессу, приложение завершает работу на устройстве. Я в тупике. Может ли кто-нибудь пролить свет на это для меня, пожалуйста?

Вот журнал запуска процесса gdb:http://pastebin.com/qTCR7mF2

Это все, что я получаю из logcat:

 I/ActivityManager(10006): Process com.gmail.whittock.tom.clockwork (pid 11460) has died.
I/WindowManager(10006): WIN DEATH: Window{4083aa18 com.gmail.whittock.tom.clockwork/com.gmail.whittock.tom.Util.NativeActivity paused=false}
I/WindowManager(10006): WIN DEATH: Window{4085d8d0 SurfaceView paused=false}
I/WindowManager(10006): Setting rotation to 0, animFlags=1
I/ActivityManager(10006): Config changed: { scale=1.0 imsi=234/10 loc=en_GB touch=3 keys=1/1/2 nav=1/1 orien=1 layout=34 uiMode=17 seq=31 themeResource=null}
  

Редактировать:

и это мой файл gdb.setup:

 $ cat libs/armeabi-v7a/gdb.setup
set solib-search-path C:/Users/Tom/dev/android/Clockwork/obj/local/armeabi-v7a
directory C:/Users/Tom/dev/android/ANDROI~2/platforms/android-5/arch-arm/usr/include C:/Users/Tom/dev/android/ANDROI~2/sources/cxx-stl/stlport/stlport C:/Users/Tom/dev/android/ANDROI~2/sources/cxx-stl/system/include C:/Users/Tom/dev/android/modules/box2d C:/Users/Tom/dev/android/Clockwork/jni
  

все пути там выглядят правильными для меня, но, возможно, проблема в использовании версий имен файлов, совместимых с dos?!

РЕДАКТИРОВАНИЕ 2: это другой файл gdb.setup:

 $ cat obj/local/armeabi-v7a/gdb.setup 
file C:/Users/Tom/dev/android/Clockwork/obj/local/armeabi-v7a/app_process
target remote :5039
file C:/Users/Tom/dev/android/Clockwork/obj/local/armeabi-v7a/app_process
target remote :5039
file C:/Users/Tom/dev/android/Clockwork/obj/local/armeabi-v7a/app_process
target remote :5039
  

Комментарии:

1. Не могли бы вы показать нам свой файл gdb.setup? В связанном журнале говорится, что там что-то не так с командой.

2. Это рутированное устройство Desire HD.

3. Я с molnarm — похоже, что-то не так с вашей настройкой GDB, и в журнале указано, что он намеренно убивает ваш процесс.

Ответ №1:

Я, наконец, нашел проблему.

у ndk-gdb должна быть NDK_DEBUG=1 установлена переменная среды, в противном случае переменная NDK_APP_GDBSETUP устанавливается пустой из-за того, что приложение не отлаживается (будучи слишком умным для своего блага)

Затем это приводит к повреждению файла gdb.setup, поскольку команда копирования завершается ошибкой, и мы начинаем добавлять в конец все, что уже есть. Вот почему одна и та же пара команд повторяется 3 раза в obj / local …/gdb.setup.

Вы понятия не имеете, сколько боли это причинило мне. Надеюсь, кому-то еще будет легче, если они прочитают это.

Ответ №2:

Пошаговые инструкции по настройке GDB в eclipse Ваша конфигурация GDB, вероятно, заблокирована. Вместо того, чтобы пытаться диагностировать проблему, попробуйте выполнить эти шаги и посмотреть, устраняет ли это вашу проблему.

Комментарии:

1. Спасибо. Я не запускаю eclipse и третий шаг. я уже выполнил первые три шага, которые применимы к моей ситуации.