Changes

Jump to: navigation, search

Mobile/Fennec/Android/GDBNoRoot

2,076 bytes added, 03:36, 26 March 2013
no edit summary
* 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.
 
=== debugging without rooting ===
 
with Froyo you can debug without rooting your phone. Instructions are below.<br>
 
First thing, to make this work with the nvidia gdb (which I found more reliable than the android r3 gdb) you need to modify install.sh and debug.sh.
 
first, change the location where install.sh copies gdbserver to somewhere writable by a non-root process. I used /data/local. Be sure to update that both in the push command and the chmod command.
 
second, update debug.sh with the new location of gdbserver.
 
finally, you'll need to add run-as $2 to the adb shell command that launches gdbserver. In the end you should have: install.sh:
 
#!/bin/sh
mkdir lib
adb push prebuilt/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
 
The above will miss some vendor drivers, you can use busybox to find all shared libraries
 
for file in $(adb shell /data/local/busybox find / -name "*.so" | tr "\n" " " | tr "\r" " "); do adb pull /$file lib_unlock_nexus/; done
 
debug.sh:
 
#!/bin/sh
if [ $# -ne 2 ]
then
echo "usage: $0 /path/to/your/library.so packagename.of.your.activity"
echo "for example:"
echo " $0 /code/mydemo/libs/armeabi/libmydemo.so com.nvidia.devtech.mydemo"
exit
fi
if [&nbsp;! -f $1 ]
then
echo "ERROR: That library file doesn't exist"
exit
fi
cp $1 lib
p=`adb shell ps | grep $2 | awk '{print $2}'`
if [ "$p" = "" ];
then
echo "ERROR: That doesn't seem to be a running process. Please make sure your"
echo "application has been started and that you are using the correct"
echo "namespace argument."
exit
fi
adb forward tcp:12345 tcp:12345
adb shell run-as $2 /data/local/gdbserver --attach&nbsp;:12345 $p
 
=== Attaching GDB ===
Assuming you have the nvidia gdb at the top of your home directory and the app_process binary in the current working directory.
~/nvidia-gdb/prebuilt/linux-x86/arm-eabi-gdb ./app_process
= GDB on Android without Root<br> =
Confirm
507
edits

Navigation menu