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:
APP_OPTIM := debugin 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:
/data/localfolder on device
- running your application & invoking in
adb shellfollowing command
gdbserver :5055 --attach PID, where PID is your application process id.
adb forward tcp:5055 tcp:5055on host
arm-linux-androideabi-gdb.exefrom your app folder
- entering following commands in gdb
set solib-search-path obj/local/armeabi
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
Android NDK + GDB
Ok, finally I made it work. The point was in
APP_ABI line in
Application.mk. There was two ABI's and somehow this confused GDB. Now it works with one abi (I chose
And something, that i also would like to notice
- there is nothing you really need to do, to make GDB work. Just dont disturb him =)
- every variable (cflag or manifest tag or etc.) has default value suitable for debugging, but thats no matter and i'll recommend you to explicitly set
APP_OPTIM := debugand
APP_CFLAG := -g -ggdb -O0in
android:debuggable="true"in manifest and
ndk-build. I have not figured out if they somehow helps GDB to work better. Some of them are duplicates of each other. And certainly none of them will not do worse.
- It is normal, when
Breakpoint address adjusted
NMcommand. I also did not understand it well, but it keeps giving me zero output on every file that I guessed to check. What is really important - output of
info sharedlibrarycommand in working GDB. Check that for your library has symbols (like my
lib3.soin example above). This is necessary, but not sufficient.
ndk-gdb unable to find gdb.setup
I just answered in the post: https://stackoverflow.com/a/32972182/1617066
I ran into the same problem. It seems something changed in recent version of Android Build tools.
The trick is:
ERROR: Could not find gdb.setup under ./libs/
It expects gdb.setup is in the directory libs but NOT libs/armeabi
so the simple workground is to copy gdb.setup and gdbserver from "libs/cpu" to "libs" and it works like a magic!
NDK r11b: help needed using the ndk-gdb.py debugger
This issue was posted to the https://github.com/android-ndk/ndk/issues site that Mikhail provided. The issue was assigned and claimed fixed: Resolution will be propagated in NDK r11c;
additionally I updated to R11c. everything is now working