How to get ndk-gdb working on Android?

You don’t need to use -O0 or -g switches.
You need to do one of following:

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

Doing anyone of these three things will automatically use -O0 and -g switches.

Can you try running gdb manually, without gdb script?
It involves following steps:

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

And see if you can debug then.

If you want see symbols for other shared libraries your library is using like libc.so, then pull them from device (from /system/lib folder) to your obj/local/armeabi folder.

Leave a Comment