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 \
328338a9a855cf5e5127dcb62e48d5036b1ad2f29bscroggo    libc++.so \
3319a21894ead074d4c01c6b1c11400338c04bf9a2commit-bot@chromium.org    libstdc++.so \
3419a21894ead074d4c01c6b1c11400338c04bf9a2commit-bot@chromium.org    libm.so \
3519a21894ead074d4c01c6b1c11400338c04bf9a2commit-bot@chromium.org    liblog.so \
3619a21894ead074d4c01c6b1c11400338c04bf9a2commit-bot@chromium.org    libz.so \
3719a21894ead074d4c01c6b1c11400338c04bf9a2commit-bot@chromium.org    libgccdemangle.so \
38ac298384b33efaa9e87431dd42a7270753de9864qiankun.miao    libsigchain.so \
39ac298384b33efaa9e87431dd42a7270753de9864qiankun.miao    libcutils.so \
40ac298384b33efaa9e87431dd42a7270753de9864qiankun.miao    libunwind.so \
41ac298384b33efaa9e87431dd42a7270753de9864qiankun.miao    libunwind-ptrace.so \
42ac298384b33efaa9e87431dd42a7270753de9864qiankun.miao    libbacktrace.so \
4319a21894ead074d4c01c6b1c11400338c04bf9a2commit-bot@chromium.org    libutils.so \
44963092a9beb071c90c1ee102b489e3eb44072878Dan Albert    libc++.so \
4519a21894ead074d4c01c6b1c11400338c04bf9a2commit-bot@chromium.org    libGLES_trace.so \
4619a21894ead074d4c01c6b1c11400338c04bf9a2commit-bot@chromium.org    libEGL.so \
4719a21894ead074d4c01c6b1c11400338c04bf9a2commit-bot@chromium.org    libGLESv2.so \
4819a21894ead074d4c01c6b1c11400338c04bf9a2commit-bot@chromium.org    ; do
49ac298384b33efaa9e87431dd42a7270753de9864qiankun.miao    ANDROID_LS=`$ADB $DEVICE_SERIAL shell ls -ld ${SYSTEM_LIBRARY_PATH}/${library_file}`
50ac298384b33efaa9e87431dd42a7270753de9864qiankun.miao    if [ "${ANDROID_LS:0:1}" == "-" ]; then
51ac298384b33efaa9e87431dd42a7270753de9864qiankun.miao      adb_pull_if_needed "${SYSTEM_LIBRARY_PATH}/${library_file}" $GDB_TMP_DIR
52ac298384b33efaa9e87431dd42a7270753de9864qiankun.miao    fi
5319a21894ead074d4c01c6b1c11400338c04bf9a2commit-bot@chromium.orgdone
5419a21894ead074d4c01c6b1c11400338c04bf9a2commit-bot@chromium.org
55ac298384b33efaa9e87431dd42a7270753de9864qiankun.miaoif [[ $ANDROID_ARCH == *64* ]]; then
56ac298384b33efaa9e87431dd42a7270753de9864qiankun.miao  adb_pull_if_needed /system/bin/linker64 $GDB_TMP_DIR
57ac298384b33efaa9e87431dd42a7270753de9864qiankun.miaoelse
58ac298384b33efaa9e87431dd42a7270753de9864qiankun.miao  adb_pull_if_needed /system/bin/linker $GDB_TMP_DIR
59ac298384b33efaa9e87431dd42a7270753de9864qiankun.miaofi
60121b3fe6a05cff6a8354ae8b4ba4da1c8edd62c3djsollen@google.com
61cc95b1aeb8cbb9201712c9982d12149b0e0027f0djsollen@google.comecho "Pushing app..."
6244566e2a157915974cfc08819e8f9182690092a1commit-bot@chromium.orgfor file in \
6344566e2a157915974cfc08819e8f9182690092a1commit-bot@chromium.org    "${BUILD_DIR}/skia_launcher" \
6444566e2a157915974cfc08819e8f9182690092a1commit-bot@chromium.org    "${BUILD_DIR}/lib/libskia_android.so" \
6544566e2a157915974cfc08819e8f9182690092a1commit-bot@chromium.org    "${BUILD_DIR}/lib/lib${APP_NAME}.so" \
6644566e2a157915974cfc08819e8f9182690092a1commit-bot@chromium.org    ; do
6744566e2a157915974cfc08819e8f9182690092a1commit-bot@chromium.org    cp "$file" $GDB_TMP_DIR
6844566e2a157915974cfc08819e8f9182690092a1commit-bot@chromium.org    adb_push_if_needed "$file" /data/local/tmp
6944566e2a157915974cfc08819e8f9182690092a1commit-bot@chromium.orgdone
70121b3fe6a05cff6a8354ae8b4ba4da1c8edd62c3djsollen@google.com
71121b3fe6a05cff6a8354ae8b4ba4da1c8edd62c3djsollen@google.comecho "Pushing gdbserver..."
72f9552230dc0d15fd1c535ad6351c3a8edde5ac82tomhudsonadb_push_if_needed $ANDROID_TOOLCHAIN/../gdbserver /data/local/tmp
73121b3fe6a05cff6a8354ae8b4ba4da1c8edd62c3djsollen@google.com
74121b3fe6a05cff6a8354ae8b4ba4da1c8edd62c3djsollen@google.comecho "Setting up port forward"
75121b3fe6a05cff6a8354ae8b4ba4da1c8edd62c3djsollen@google.com$ADB forward "tcp:5039" "tcp:5039"
76121b3fe6a05cff6a8354ae8b4ba4da1c8edd62c3djsollen@google.com
77cc95b1aeb8cbb9201712c9982d12149b0e0027f0djsollen@google.com# Kill all previous instances of gdbserver and the app to rid all port overriding errors.
78121b3fe6a05cff6a8354ae8b4ba4da1c8edd62c3djsollen@google.comecho "Killing any running Skia processes."
79121b3fe6a05cff6a8354ae8b4ba4da1c8edd62c3djsollen@google.com$ADB shell ps | grep gdbserver | awk '{print $2}' | xargs $ADB shell kill
80cc95b1aeb8cbb9201712c9982d12149b0e0027f0djsollen@google.com$ADB shell ps | grep ${APP_NAME} | awk '{print $2}' | xargs $ADB shell kill
81121b3fe6a05cff6a8354ae8b4ba4da1c8edd62c3djsollen@google.com
82121b3fe6a05cff6a8354ae8b4ba4da1c8edd62c3djsollen@google.com# Starting up gdbserver in android shell
8344566e2a157915974cfc08819e8f9182690092a1commit-bot@chromium.orgecho "Starting gdbserver with command: ${APP_ARGS[@]}"
84d75547925d522cfc922e7f73ab0d69076972199cqiankun.miao$ADB shell LD_LIBRARY_PATH=/data/local/tmp:\$LD_LIBRARY_PATH /data/local/tmp/gdbserver :5039 /data/local/tmp/skia_launcher ${APP_ARGS[@]} &
85