1121b3fe6a05cff6a8354ae8b4ba4da1c8edd62c3djsollen@google.com#!/bin/bash
2121b3fe6a05cff6a8354ae8b4ba4da1c8edd62c3djsollen@google.com#
3121b3fe6a05cff6a8354ae8b4ba4da1c8edd62c3djsollen@google.com# android_gdbserver: Pushes gdbserver. Starts debugging environment.
4121b3fe6a05cff6a8354ae8b4ba4da1c8edd62c3djsollen@google.com
5121b3fe6a05cff6a8354ae8b4ba4da1c8edd62c3djsollen@google.comSCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
67627535b8f968ba135e0ec16d15f30c31fe786d4borenet@google.comsource $SCRIPT_DIR/android_setup.sh
7cc95b1aeb8cbb9201712c9982d12149b0e0027f0djsollen@google.comsource $SCRIPT_DIR/utils/setup_adb.sh
8cc95b1aeb8cbb9201712c9982d12149b0e0027f0djsollen@google.com
944566e2a157915974cfc08819e8f9182690092a1commit-bot@chromium.orgAPP_NAME=${APP_ARGS[0]}
107627535b8f968ba135e0ec16d15f30c31fe786d4borenet@google.comPORT=5039
11121b3fe6a05cff6a8354ae8b4ba4da1c8edd62c3djsollen@google.com
1244566e2a157915974cfc08819e8f9182690092a1commit-bot@chromium.orgBUILD_DIR="${SKIA_OUT}/${BUILDTYPE}"
1344566e2a157915974cfc08819e8f9182690092a1commit-bot@chromium.orgTARGET_LIBRARY="${BUILD_DIR}/lib/lib${APP_NAME}.so"
1444566e2a157915974cfc08819e8f9182690092a1commit-bot@chromium.orgif [ ! -f "$TARGET_LIBRARY" ]
15cc95b1aeb8cbb9201712c9982d12149b0e0027f0djsollen@google.comthen
1644566e2a157915974cfc08819e8f9182690092a1commit-bot@chromium.org  echo "Unable to find the ${APP_NAME} library at ${TARGET_LIBRARY}."
17cc95b1aeb8cbb9201712c9982d12149b0e0027f0djsollen@google.com  exit 1
18cc95b1aeb8cbb9201712c9982d12149b0e0027f0djsollen@google.comfi
19121b3fe6a05cff6a8354ae8b4ba4da1c8edd62c3djsollen@google.com
20121b3fe6a05cff6a8354ae8b4ba4da1c8edd62c3djsollen@google.com# We need the debug symbols from these files
21121b3fe6a05cff6a8354ae8b4ba4da1c8edd62c3djsollen@google.comGDB_TMP_DIR=$(pwd)/android_gdb_tmp
22c2d6a20ef826eddf5348a9dc61597815126f9393commit-bot@chromium.orgmkdir -p $GDB_TMP_DIR
23cc95b1aeb8cbb9201712c9982d12149b0e0027f0djsollen@google.com
24121b3fe6a05cff6a8354ae8b4ba4da1c8edd62c3djsollen@google.comecho "Copying symbol files"
25d75547925d522cfc922e7f73ab0d69076972199cqiankun.miaoif [[ $ANDROID_ARCH == *64* ]]; then
26d75547925d522cfc922e7f73ab0d69076972199cqiankun.miao  SYSTEM_LIBRARY_PATH=/system/lib64
27d75547925d522cfc922e7f73ab0d69076972199cqiankun.miaoelse
28d75547925d522cfc922e7f73ab0d69076972199cqiankun.miao  SYSTEM_LIBRARY_PATH=/system/lib
29d75547925d522cfc922e7f73ab0d69076972199cqiankun.miaofi
3019a21894ead074d4c01c6b1c11400338c04bf9a2commit-bot@chromium.orgfor library_file in \
3119a21894ead074d4c01c6b1c11400338c04bf9a2commit-bot@chromium.org    libc.so \
3219a21894ead074d4c01c6b1c11400338c04bf9a2commit-bot@chromium.org    libstdc++.so \
3319a21894ead074d4c01c6b1c11400338c04bf9a2commit-bot@chromium.org    libm.so \
3419a21894ead074d4c01c6b1c11400338c04bf9a2commit-bot@chromium.org    liblog.so \
3519a21894ead074d4c01c6b1c11400338c04bf9a2commit-bot@chromium.org    libz.so \
3619a21894ead074d4c01c6b1c11400338c04bf9a2commit-bot@chromium.org    libgccdemangle.so \
37ac298384b33efaa9e87431dd42a7270753de9864qiankun.miao    libsigchain.so \
38ac298384b33efaa9e87431dd42a7270753de9864qiankun.miao    libcutils.so \
39ac298384b33efaa9e87431dd42a7270753de9864qiankun.miao    libunwind.so \
40ac298384b33efaa9e87431dd42a7270753de9864qiankun.miao    libunwind-ptrace.so \
41ac298384b33efaa9e87431dd42a7270753de9864qiankun.miao    libbacktrace.so \
4219a21894ead074d4c01c6b1c11400338c04bf9a2commit-bot@chromium.org    libutils.so \
4319a21894ead074d4c01c6b1c11400338c04bf9a2commit-bot@chromium.org    libstlport.so \
4419a21894ead074d4c01c6b1c11400338c04bf9a2commit-bot@chromium.org    libGLES_trace.so \
4519a21894ead074d4c01c6b1c11400338c04bf9a2commit-bot@chromium.org    libEGL.so \
4619a21894ead074d4c01c6b1c11400338c04bf9a2commit-bot@chromium.org    libGLESv2.so \
4719a21894ead074d4c01c6b1c11400338c04bf9a2commit-bot@chromium.org    ; do
48ac298384b33efaa9e87431dd42a7270753de9864qiankun.miao    ANDROID_LS=`$ADB $DEVICE_SERIAL shell ls -ld ${SYSTEM_LIBRARY_PATH}/${library_file}`
49ac298384b33efaa9e87431dd42a7270753de9864qiankun.miao    if [ "${ANDROID_LS:0:1}" == "-" ]; then
50ac298384b33efaa9e87431dd42a7270753de9864qiankun.miao      adb_pull_if_needed "${SYSTEM_LIBRARY_PATH}/${library_file}" $GDB_TMP_DIR
51ac298384b33efaa9e87431dd42a7270753de9864qiankun.miao    fi
5219a21894ead074d4c01c6b1c11400338c04bf9a2commit-bot@chromium.orgdone
5319a21894ead074d4c01c6b1c11400338c04bf9a2commit-bot@chromium.org
54ac298384b33efaa9e87431dd42a7270753de9864qiankun.miaoif [[ $ANDROID_ARCH == *64* ]]; then
55ac298384b33efaa9e87431dd42a7270753de9864qiankun.miao  adb_pull_if_needed /system/bin/linker64 $GDB_TMP_DIR
56ac298384b33efaa9e87431dd42a7270753de9864qiankun.miaoelse
57ac298384b33efaa9e87431dd42a7270753de9864qiankun.miao  adb_pull_if_needed /system/bin/linker $GDB_TMP_DIR
58ac298384b33efaa9e87431dd42a7270753de9864qiankun.miaofi
59121b3fe6a05cff6a8354ae8b4ba4da1c8edd62c3djsollen@google.com
60cc95b1aeb8cbb9201712c9982d12149b0e0027f0djsollen@google.comecho "Pushing app..."
6144566e2a157915974cfc08819e8f9182690092a1commit-bot@chromium.orgfor file in \
6244566e2a157915974cfc08819e8f9182690092a1commit-bot@chromium.org    "${BUILD_DIR}/skia_launcher" \
6344566e2a157915974cfc08819e8f9182690092a1commit-bot@chromium.org    "${BUILD_DIR}/lib/libskia_android.so" \
6444566e2a157915974cfc08819e8f9182690092a1commit-bot@chromium.org    "${BUILD_DIR}/lib/lib${APP_NAME}.so" \
6544566e2a157915974cfc08819e8f9182690092a1commit-bot@chromium.org    ; do
6644566e2a157915974cfc08819e8f9182690092a1commit-bot@chromium.org    cp "$file" $GDB_TMP_DIR
6744566e2a157915974cfc08819e8f9182690092a1commit-bot@chromium.org    adb_push_if_needed "$file" /data/local/tmp
6844566e2a157915974cfc08819e8f9182690092a1commit-bot@chromium.orgdone
69121b3fe6a05cff6a8354ae8b4ba4da1c8edd62c3djsollen@google.com
70121b3fe6a05cff6a8354ae8b4ba4da1c8edd62c3djsollen@google.comecho "Pushing gdbserver..."
71f9552230dc0d15fd1c535ad6351c3a8edde5ac82tomhudsonadb_push_if_needed $ANDROID_TOOLCHAIN/../gdbserver /data/local/tmp
72121b3fe6a05cff6a8354ae8b4ba4da1c8edd62c3djsollen@google.com
73121b3fe6a05cff6a8354ae8b4ba4da1c8edd62c3djsollen@google.comecho "Setting up port forward"
74121b3fe6a05cff6a8354ae8b4ba4da1c8edd62c3djsollen@google.com$ADB forward "tcp:5039" "tcp:5039"
75121b3fe6a05cff6a8354ae8b4ba4da1c8edd62c3djsollen@google.com
76cc95b1aeb8cbb9201712c9982d12149b0e0027f0djsollen@google.com# Kill all previous instances of gdbserver and the app to rid all port overriding errors.
77121b3fe6a05cff6a8354ae8b4ba4da1c8edd62c3djsollen@google.comecho "Killing any running Skia processes."
78121b3fe6a05cff6a8354ae8b4ba4da1c8edd62c3djsollen@google.com$ADB shell ps | grep gdbserver | awk '{print $2}' | xargs $ADB shell kill
79cc95b1aeb8cbb9201712c9982d12149b0e0027f0djsollen@google.com$ADB shell ps | grep ${APP_NAME} | awk '{print $2}' | xargs $ADB shell kill
80121b3fe6a05cff6a8354ae8b4ba4da1c8edd62c3djsollen@google.com
81121b3fe6a05cff6a8354ae8b4ba4da1c8edd62c3djsollen@google.com# Starting up gdbserver in android shell
8244566e2a157915974cfc08819e8f9182690092a1commit-bot@chromium.orgecho "Starting gdbserver with command: ${APP_ARGS[@]}"
83d75547925d522cfc922e7f73ab0d69076972199cqiankun.miao$ADB shell LD_LIBRARY_PATH=/data/local/tmp:\$LD_LIBRARY_PATH /data/local/tmp/gdbserver :5039 /data/local/tmp/skia_launcher ${APP_ARGS[@]} &
84