Как заставить ndk-gdb работать на Android?

Я пытаюсь заставить работать отладчик NDK, но пока безуспешно.

Чтобы убедиться, что мои символы отладки присутствуют и действительны, я использую опции компилятора -O0 и -g и параметр ndk-build NDK_DEBUG = 1.

Скрипт ndk-gdb работает без проблем и запускает GDB. Когда делать «общую библиотеку» команда, я получаю это:

<code>Symbols already loaded for /bla/bla/libMySharedLib.so
</code>

Однако, когда я пытаюсь нарушить исполнение или, например, добавив segfault для тестирования, я никогда не получаю символы из этой библиотеки в стеке вызовов. Единственные символы, которые я получил, были из libc, если я прервал выполнение, когда он, например, ожидает мьютекс. Также попытался добавить точки останова без удачи. GDB позволяет мне добавлять точки останова, и код работает нормально, но точки останова никогда не срабатывают.

Я использую API уровня 8, так как мне нужно поддерживать Android 2.2 (Froyo).

Сообщается, что их документы не работают в:issuetracker.google.com/issues/69223567 документыdeveloper.android.com/ndk/guides/ndk-gdb.html достал P999 :-)

Ответы на вопрос(1)

Решение Вопроса

Вам не нужно использовать ключи -O0 или -g. Вам необходимо выполнить одно из следующих действий:

put android:debuggable="true" to the <application> tag in AndroidManifest.xml file use NDK_DEBUG=1 after ndk-build put APP_OPTIM := debug in Application.mk file

При выполнении любого из этих трех действий автоматически используются ключи -O0 и -g.

Можете ли вы попробовать запустить GDB вручную, без сценария GDB? Он включает в себя следующие шаги:

pushing gdbserver file to /data/local folder on device running your application & invoking in adb shell following command gdbserver :5055 --attach PID, where PID is your application process id. running adb forward tcp:5055 tcp:5055 on host running arm-linux-androideabi-gdb.exe from your app folder entering following commands in gdb set solib-search-path obj/local/armeabi file obj/local/armeabi/libMySharedLib.so target remote :5055

И посмотри, сможешь ли ты отладить тогда.

Если вы хотите видеть символы для других общих библиотек, ваша библиотека использует какlibc.soзатем вытащите их из устройства (из/system/lib папку) в вашobj/local/armeabi папка.

 25 сент. 2014 г., 11:46
Как вы нажимаете на устройстве gdbserver? ?
 20 нояб. 2012 г., 19:14
[Re] построен с опцией NDK_DEBUG = 1when вызов «ndk-build»; не после.
 22 янв. 2013 г., 13:29
где это ndk-build ?
 22 янв. 2013 г., 19:10
ndk-build - это команда, которую вы вызываете для создания собственного кода. Скрипт ndk-build предоставляется Android NDK и находится в корне архива zip / tar.bz2.
 Simplex17 мая 2012 г., 08:49
По несвязанной причине я должен был воссоздать свой проект с нуля; после этого и попыток настроить все по книге, включая ваши предложения M & # x101; rti & # x146; & # x161 ;, отладка NDK сработала. Я не уверен, в чем проблема, к сожалению. Кстати, APP_OPTIM нужно было установить для отладки (в нижнем регистре), а не для отладки.

Ваш ответ на вопрос