Я настроил отладку в Eclipse для собственного кода, используя Android NDK (в Windows XP, с Cygwin) до стадии, где я могу установить точки останова как в Java, так и в собственном коде, и отладчик будет правильно их разорвать. Моя проблема заключается в том, что, когда вы переходите через собственный код, я часто получаю ошибки сегментации /SIGILL, которые не возникают при продолжении прохождения точки останова.
- Мое приложение отлаживается, как определено в AndroidManifest.xml
- Я изменил (NDK)/build/core/build-binary.mk, чтобы он не удалял отладочные символы, когда
APP_OPTIM
определяется как debug, который находится в файле Application.mk в моей jni-каталоге - Я определил
LOCAL_CFLAGS := -g -O0
в файле Android.mk, и я также пробовал каждый из этих флагов отдельно
Я читал, что эта проблема связана с созданным оптимизированным кодом, но отключить оптимизацию с помощью -O0
не влияет на мою проблему. Я также сталкивался с использованием флага NDK_BUILD=1
при создании, но определение debuggable=true
в AndroidManifest.xml, по-видимому, имеет тот же эффект.
Я пробовал это как на эмуляторе (работает 2.3.3), так и на устройстве (работает 2.2 - на удивление не было проблем с потоками, которые я ожидал), с аналогичными результатами (хотя, если я правильно помню, сбои произошло в разных точках кода).
Есть ли у кого-нибудь представление о возможных исправлениях/шагах, которые я мог попробовать, и/или смог успешно выполнить собственный код без проблем?
Большое спасибо
Изменить: Это никогда не было действительно решено, но для тех, кто хочет взглянуть на мой гид для отладки NDK, вы можете найти его .
Изменить 2: Ответы, которые я получил на этот вопрос, появились, когда появились новые версии NDK, и этот вопрос теперь может быть лишним. Мой гид все еще может работать, но я не использовал NDK какое-то время, поэтому я не могу ручаться за его правильную правильность. Я принял ответ, который у меня есть, поскольку все три в основном говорят одно и то же, и это был первый, который должен быть представлен.