Mobile/Fennec/Android/GDBNoRoot

< Mobile‎ | Fennec‎ | Android
Revision as of 20:45, 25 September 2012 by Rillian (talk | contribs) (link back to the Jimdb page)
  • NOTE: While they generally work, these instructions are obsoleted by Mobile/Fennec/Android/GDB, which automates most of the steps below and fixes other issues as well. That version of gdb is recommended over the ndk version as of late 2012.

GDB on Android without Root

It is possible to use gdb without root on Android 2.3+ devices!

  • Go to your Android NDK directory and enter /build
  • Run this:


mkdir lib
adb push prebuilt/linux-x86/arm-eabi-4.4.0/bin/gdbserver /data/local
adb shell chmod 755 /data/local/gdbserver
for file in $(adb shell ls /system/lib | tr "\n" " " | tr "\r" " "); do
adb pull /system/lib/$file lib
done
adb pull /system/bin/app_process lib

  • Forward a port, by doing


adb forward tcp:12345 tcp:12345

  • Find your pid with


adb shell ps | grep fennec

  • Connect to the process on the devices with


adb shell run-as org.mozilla.fennec_unofficial /data/local/gdbserver :12345 --attach THE_PID_YOU_JUST_FOUND


  • Run gdb with


./prebuilt/linux-x86/arm-eabi-4.4.0/bin/arm-eabi-gdb ./lib/app_process


  • In gdb, run this or just place it in a .gdbinit (then run just android_attach)


def android_attach
set solib-absolute-prefix /builds/android_tools/tegra-gdb-20100902/lib/
set solib-search-path
/builds/android_tools/tegra-gdb-20100902/lib/:/builds/android_tools/tegra-gdb-20100902/lib/system/lib:/builds/mozilla-central/obj-android/dist/bin/
target remote localhost:12345
end