Home | History | Annotate | Download | only in bin
      1 #!/bin/bash
      2 #
      3 # android_gdbserver: Pushes gdbserver. Starts debugging environment.
      4 
      5 SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
      6 source $SCRIPT_DIR/utils/android_setup.sh
      7 source $SCRIPT_DIR/utils/setup_adb.sh
      8 
      9 APP_NAME=${APP_ARGS[0]}
     10 
     11 TARGET_EXE="${SKIA_OUT}/${APP_NAME}"
     12 if [ ! -f "$TARGET_EXE" ]
     13 then
     14   echo "Unable to find ${TARGET_EXE}."
     15   exit 1
     16 fi
     17 
     18 IS_64_BIT="false"
     19 GN_TARGET_CPU=$(grep target_cpu ${SKIA_OUT}/args.gn)
     20 if [ -z "$GN_TARGET_CPU" ]; then
     21   IS_64_BIT="true"
     22 elif [[ $GN_TARGET_CPU == *64* ]]; then
     23   IS_64_BIT="true"
     24 fi
     25 
     26 # We need the debug symbols from these files
     27 GDB_TMP_DIR=$SKIA_OUT/android_gdb_tmp
     28 mkdir -p $GDB_TMP_DIR
     29 
     30 echo "Copying symbol files"
     31 if [[ $IS_64_BIT == "true" ]]; then
     32   SYSTEM_LIBRARY_PATH=/system/lib64
     33   echo "64 bit!"
     34 else
     35   SYSTEM_LIBRARY_PATH=/system/lib
     36 fi
     37 for library_file in \
     38     libc.so \
     39     libc++.so \
     40     libstdc++.so \
     41     libm.so \
     42     liblog.so \
     43     libz.so \
     44     libsigchain.so \
     45     libcutils.so \
     46     libunwind.so \
     47     libbacktrace.so \
     48     libutils.so \
     49     libEGL.so \
     50     libGLESv2.so \
     51     ; do
     52     ANDROID_LS=`$ADB $DEVICE_SERIAL shell ls -ld ${SYSTEM_LIBRARY_PATH}/${library_file}`
     53     if [ "${ANDROID_LS:0:1}" == "-" ]; then
     54       adb_pull_if_needed "${SYSTEM_LIBRARY_PATH}/${library_file}" $GDB_TMP_DIR
     55     fi
     56 done
     57 
     58 if [[ $IS_64_BIT == "true" ]]; then
     59   adb_pull_if_needed /system/bin/linker64 $GDB_TMP_DIR
     60 else
     61   adb_pull_if_needed /system/bin/linker $GDB_TMP_DIR
     62 fi
     63 
     64 echo "Pushing app..."
     65 cp "$TARGET_EXE" $GDB_TMP_DIR
     66 adb_push_if_needed "${TARGET_EXE}" /data/local/tmp
     67 
     68 echo "Pushing gdbserver..."
     69 adb_push_if_needed $SKIA_OUT/gdbserver /data/local/tmp
     70 
     71 echo "Setting up port forward"
     72 $ADB forward "tcp:5039" "tcp:5039"
     73 
     74 # Kill all previous instances of gdbserver and the app to rid all port overriding errors.
     75 echo "Killing any running Skia processes."
     76 set +e
     77 $ADB shell ps | grep gdbserver | awk '{print $2}' | xargs $ADB shell kill 2> /dev/null
     78 $ADB shell ps | grep ${APP_NAME} | awk '{print $2}' | xargs $ADB shell kill 2> /dev/null
     79 set -e
     80 
     81 # Starting up gdbserver in android shell
     82 echo "Starting gdbserver with command: ${APP_ARGS[@]}"
     83 $ADB shell /data/local/tmp/gdbserver :5039 /data/local/tmp/${APP_ARGS[@]} &
     84