User:Blassey/Notes/Android: Difference between revisions

Jump to navigation Jump to search
no edit summary
No edit summary
Line 35: Line 35:
   adb shell am start -a android.activity.MAIN -n org.mozilla.fennec/org.mozilla.fennec.App --es env0 NSPR_LOG_MODULES=all:5
   adb shell am start -a android.activity.MAIN -n org.mozilla.fennec/org.mozilla.fennec.App --es env0 NSPR_LOG_MODULES=all:5


==debugging without rooting==
== debugging without rooting ==


with Froyo you can debug without rooting your phone. However 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.
with Froyo you can debug without rooting your phone. Instructions are below. See also [[Mobile/Fennec/Android/GDBNoRoot|Fennec/Android/GDBNoRoot]] for another guide on how to do this.


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:
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.
install.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
   #!/bin/sh
  mkdir lib
mkdir lib
  adb push prebuilt/gdbserver /data/local
adb push prebuilt/gdbserver /data/local
  adb shell chmod 755 /data/local/gdbserver
adb shell chmod 755 /data/local/gdbserver
  for file in $(adb shell ls /system/lib | tr "\n" " " | tr "\r" " "); do
for file in $(adb shell ls /system/lib | tr "\n" " " | tr "\r" " "); do
      adb pull /system/lib/$file lib
    adb pull /system/lib/$file lib
  done
done
  adb pull /system/bin/app_process lib  
adb pull /system/bin/app_process lib  
 
debug.sh:


debug.sh:
 !/bin/sh
  !/bin/sh
if [ $# -ne 2 ]
  if [ $# -ne 2 ]
then
  then
    echo "usage: $0 /path/to/your/library.so packagename.of.your.activity"
      echo "usage: $0 /path/to/your/library.so packagename.of.your.activity"
    echo "for example:"
      echo "for example:"
    echo "  $0 /code/mydemo/libs/armeabi/libmydemo.so com.nvidia.devtech.mydemo"
      echo "  $0 /code/mydemo/libs/armeabi/libmydemo.so com.nvidia.devtech.mydemo"
    exit
      exit
fi
  fi
 
if [ ! -f $1 ]
  if [ ! -f $1 ]
then
  then
    echo "ERROR: That library file doesn't exist"
      echo "ERROR: That library file doesn't exist"
    exit
      exit
fi
  fi
 
cp $1 lib
  cp $1 lib
 
p=`adb shell ps | grep $2 | awk '{print $2}'`
  p=`adb shell ps | grep $2 | awk '{print $2}'`
if [ "$p" = "" ];
  if [ "$p" = "" ];
then
  then
    echo "ERROR: That doesn't seem to be a running process. Please make sure your"
      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 "application has been started and that you are using the correct"
    echo "namespace argument."
      echo "namespace argument."
    exit
      exit
fi
  fi
 
adb forward tcp:12345 tcp:12345
  adb forward tcp:12345 tcp:12345
adb shell run-as $2 /data/local/gdbserver --attach :12345 $p
  adb shell run-as $2 /data/local/gdbserver --attach :12345 $p


==killer script==
==killer script==
213

edits

Navigation menu