У меня есть приложение для Android С++, которое я пытаюсь отладить с помощью ndk-gdb. Приложение использует несколько потоков, но предположительно r5 ndk поддерживает несколько потоков. Кроме того, я даже не дошел до точки, где запускается gdb. Я запустил команду:
ndk-gdb --start --force --verbose
Затем он находит правильный путь для ndk и sdk (или, по крайней мере, adb), а также необходимые ABI и еще что-то.
$ ndk-gdb --start --force --verbose
Android NDK installation path: /home/leif/eclipse/android-ndk-r5b
Using default adb command: /home/leif/eclipse/android-sdk-linux_86/platform-tools/adb
ADB version found: Android Debug Bridge version 1.0.26
Using final ADB command: '/home/leif/eclipse/android-sdk-linux_86/platform-tools/adb'
Using auto-detected project path: .
Found package name: net.leifandersen.mobile.android.marblemachine
ABIs targetted by application: armeabi
Device API Level: 10
Device CPU ABIs: armeabi-v7a armeabi
Compatible device ABI: armeabi
Затем он ищет сервер gdb и находит его, включая правильный PID, после чего начинает работу.
Но тогда он сообщает мне, что пакет не найден:
Setup network redirection
## COMMAND: /home/leif/eclipse/android-sdk-linux_86/platform-tools/adb shell run-as <package name> lib/gdbserver +debug-socket --attach 16040
## COMMAND: /home/leif/eclipse/android-sdk-linux_86/platform-tools/adb forward tcp:5039 localfilesystem:run-as: Package '<package name>' is unknown/debug-socket
Затем он выплевывает то, что вы получите, если неправильно используете adb (файл справки), а затем:
ERROR: Could not setup network redirection to gdbserver?
Maybe using --port=<port> to use a different TCP port might help?
run-as: Package '<package name>' is unknown
Я заглянул в /data/system/packages.list, и да, мой apk, безусловно, там, и местоположение, которое оно указывает, корректно в файловой системе. Так что не проблема.
Этот учебник: http://vilimpoc.org/blog/2010/09/23/hello-gdbserver-a-debuggable-jni-example-for-android/ рекомендует удалить и переустановить, а также очистить сборку eclipse.
Я не использовал eclipse для сборки пакета, но я все это очистил и скомпилировал с нуля, удалил и переустановил, чтобы не повезло.
У кого-то были подобные проблемы, и как вы их разрешили? Спасибо.
Изменить: О, и я попробовал другой порт, но ничего не понял, по-видимому, ничего не было на 5039 (порт по умолчанию). Афайк, у меня нет никаких брандмауэров, блокирующих это соединение. Я также разрабатываю Ubuntu 11.04.
Edit2: Хм... похоже, что с новым ndk (r5c) сообщение об ошибке также изменилось:
ERROR: Could not extract package data directory. Are you sure that
your installed application is debuggable?
И да, для отладки установлено значение true в манифесте, а весь собственный код построен с помощью:
LOCAL_CFLAGS := -Wall -g
LOCAL_LDFLAGS := -Wl,-Map,xxx.map