У меня есть приложение на C ++ для 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's data directory. Are you sure that
your installed application is debuggable?
И да, для debuggable в манифесте установлено значение true, а весь нативный код создается с помощью:
LOCAL_CFLAGS := -Wall -g
LOCAL_LDFLAGS := -Wl,-Map,xxx.map