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