присоединение к собственному приложению Android с помощью GDB закрывает приложение на устройстве - PullRequest
5 голосов
/ 08 ноября 2011

Я пытаюсь отладить родное приложение, скомпилированное с помощью 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-совместимые версии имен файлов, которые вызывают проблему?!

EDIT2: Это другой файл 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

Ответы [ 2 ]

1 голос
/ 14 апреля 2012

Я наконец-то обнаружил проблему.

ndk-gdb ДОЛЖЕН ИМЕТЬ переменную окружения NDK_DEBUG=1, в противном случае переменная NDK_APP_GDBSETUP будет пуста из-за убеждения, что приложение не отлаживаемослишком чертовски умен для своей пользы)

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

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

0 голосов
/ 01 апреля 2012

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

...