Отладка Eclipse Android Native не удалась

У меня проблема с получением встроенной поддержки отладки для моего проекта Eclipse под Windows для Android.
К сожалению, Google не помог после более чем 1 дня исследования.

Я в значительной степени новичок в Eclipse, поэтому решение может быть простым, потому что я думаю, что я делаю нестандартные вещи.

Мой Android-проект уже работает и работает нормально на моих устройствах (Acer Iconia A500 Android 3.2.1, HTC Incredible S Android 4.0.4 и т. Д.).

Я создал проект с помощью мастера плагинов ADT, а затем добавил встроенную поддержку, используя пункт контекстного меню проекта, добавленный ADT.

Затем я добавил java-файлы, которые у меня уже были (ранее я использовал для компиляции с CMake и автономной цепочкой инструментов Android, хотя я никогда не пытался удаленно отлаживать таким образом). Я создал новый пакет для этого «com.x.y», куда я их и поместил (я не хочу раскрывать настоящее имя пакета, так как проект будет частью коммерческого продукта).

Затем я добавил свои источники, перетащив их в папку jni. Источники не находятся внутри папки jni, но связаны с местоположением «../../» под проектом (это часть кроссплатформенного приложения, поэтому я могу повторно использовать исходные файлы в разных цепочках инструментов).

Я также связываю 4 статические библиотеки, которые будут поставляться с продуктом, настраивая Android.mk следующим образом:

LOCAL_PATH := $(call my-dir)
MY_PATH := $(LOCAL_PATH)
LOCAL_PATH := $(MY_SDK)/lib/Android/armeabi-v7aD

include $(CLEAR_VARS)
LOCAL_MODULE    := A
LOCAL_SRC_FILES := libA.a
include $(PREBUILT_STATIC_LIBRARY)

include $(CLEAR_VARS)
LOCAL_MODULE    := B
LOCAL_SRC_FILES := libB.a
include $(PREBUILT_STATIC_LIBRARY)

include $(CLEAR_VARS)
LOCAL_MODULE    := C
LOCAL_SRC_FILES := libC.a
include $(PREBUILT_STATIC_LIBRARY)

include $(CLEAR_VARS)
LOCAL_MODULE    := D
LOCAL_SRC_FILES := libD.a
include $(PREBUILT_STATIC_LIBRARY)

include $(CLEAR_VARS)

LOCAL_C_INCLUDES += $(my_SDK)/include/
LOCAL_PATH := $(MY_PATH)/../../..
LOCAL_CFLAGS  += -Wno-format -DANDROID -fno-rtti -fno-exceptions #And many other flags If they are important I will post them later, too
LOCAL_CPPFLAGS += -fno-rtti -fno-exceptions
LOCAL_MODULE    := MY_PROJECT
LOCAL_SRC_FILES := Android/Main.cpp # Some other sources..
LOCAL_LDLIBS    := -lstdc++ -lEGL -lGLESv2 -llog -Wl,--allow-multiple-definition -Wl,--no-undefined
LOCAL_STATIC_LIBRARIES := A B C D

include $(BUILD_SHARED_LIBRARY)

У меня также есть Application.mk:

APP_ABI := armeabi-v7a
APP_PLATFORM := android-9
APP_STL := stlport_static
APP_CFLAGS += -fno-rtti -fno-exceptions

Затем я добавил в разделе «Настройки отладки» новое «родное приложение Android», запускающее действие по умолчанию и использующее

Отладчик «$ {NdkGdb}»

Командный файл «$ {NdkProject} \ libs \ $ {NdkCompatAbi} \ gdb.setup»

Общие библиотеки (добавляются автоматически) $ {NdkProject} / obj / local / $ NdkCompatAbi} /

Остальное также добавляется автоматически, и я думаю, что должно работать таким образом.

Мне кажется странным то, что я получаю вывод консоли

[2013-03-08 10:50:36 — Невозможно запустить cygpath. Cygwin находится на пути?] Java.io.IOException: не удается запустить программу «cygpath»: ошибка CreateProcess = 2, система не может найти указанный файл

Но я могу нормально построить проект таким образом, и позже я не получаю никаких предупреждений, пытаясь подключить GDB (я использую Msys, у меня также установлен Cygwin, поэтому я не знаю, почему Eclipse жалуется здесь).

Когда я запускаю приложение, оно запускается на устройстве, а затем я получаю следующий вывод на консоль ([Android Native Application] gdb):

(no debugging symbols found)
Error while mapping shared library sections:
/system/bin/linker: No such file or directory.
Error while mapping shared library sections:
libstdc++.so: No such file or directory.

... And alot more of that type

(no debugging symbols found)
warning: Unable to find dynamic linker breakpoint function.
GDB will be unable to debug shared library initializers
and track explicitly loaded dynamic code.
warning: shared library handler failed to enable breakpoint
No line 219 in file "jni/../../../MySourceFile.cpp".

Я определенно собираю с NDK_DEBUG = 1, мои статические .a библиотеки строятся с -g
В AndroidManifest.xml есть запись android: debuggable = «true».

Когда я запускаю «sh / ndk-gdb —verbose» в каталоге проекта eclipse (используя Msys), я получаю следующий вывод:

Путь установки Android NDK: / c / SDK / android-ndk-r7
Использование команды adb по умолчанию: /c/SDK/android-sdks/platform-tools/adb.exe
Обнаружена версия ADB: Android Debug Bridge версия 1.0.31
Используя последнюю команду ADB: ‘/c/SDK/android-sdks/platform-tools/adb.exe’
Используя автоматически обнаруженный путь проекта:.
Найденное имя пакета: com.x.y
ABI, на которые нацелено приложение: armeabi-v7a
Уровень API устройства: 13
Устройство CPU ABIs: armeabi-v7a armeabi
Совместимое устройство ABI: armeabi-v7a
Найден флаг отладки: true
ОШИБКА: приложение, не подлежащее отладке, установлено на целевом устройстве.
Пожалуйста, переустановите отлаживаемую версию!

Я действительно хочу иметь встроенную поддержку отладки для этого проекта. Поэтому я очень ценю любую помощь.

Это правда, что я иметь использовать cygwin? Я не получаю никакого разумного сообщения об ошибке при попытке присоединить отладчик.

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …