Ответ 1
Вам не нужно использовать переключатели -O0 или -g. Вам нужно сделать следующее:
- поместите
android:debuggable="true"
в тег<application>
вAndroidManifest.xml
файле - использовать
NDK_DEBUG=1
после ndk-build - положить
APP_OPTIM := debug
в файл Application.mk
Выполнение любой из этих трех вещей будет автоматически использовать переключатели -O0 и -g.
Можете ли вы попробовать запустить gdb вручную, без gdb script? Он включает следующие шаги:
- нажатие
gdbserver
файла на папку/data/local
на устройстве - запустить ваше приложение и вызвать в
adb shell
следующую командуgdbserver :5055 --attach PID
, где PID - это ваш идентификатор процесса приложения. - запуск
adb forward tcp:5055 tcp:5055
на хосте - запуск
arm-linux-androideabi-gdb.exe
из папки вашего приложения - ввод следующих команд в gdb
-
set solib-search-path obj/local/armeabi
-
file obj/local/armeabi/libMySharedLib.so
-
target remote :5055
И посмотрим, сможете ли вы отлаживать его.
Если вы хотите видеть символы для других разделяемых библиотек, которые использует ваша библиотека, например libc.so
, затем вытащите их из устройства (из /system/lib
) в папку obj/local/armeabi
.