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"
2519a21894ead074d4c01c6b1c11400338c04bf9a2commit-bot@chromium.orgSYSTEM_LIBRARY_PATH=/system/lib
2619a21894ead074d4c01c6b1c11400338c04bf9a2commit-bot@chromium.orgfor library_file in \
2719a21894ead074d4c01c6b1c11400338c04bf9a2commit-bot@chromium.org    libc.so \
2819a21894ead074d4c01c6b1c11400338c04bf9a2commit-bot@chromium.org    libstdc++.so \
2919a21894ead074d4c01c6b1c11400338c04bf9a2commit-bot@chromium.org    libm.so \
3019a21894ead074d4c01c6b1c11400338c04bf9a2commit-bot@chromium.org    liblog.so \
3119a21894ead074d4c01c6b1c11400338c04bf9a2commit-bot@chromium.org    libz.so \
3219a21894ead074d4c01c6b1c11400338c04bf9a2commit-bot@chromium.org    libgccdemangle.so \
3319a21894ead074d4c01c6b1c11400338c04bf9a2commit-bot@chromium.org    libcorkscrew.so \
3419a21894ead074d4c01c6b1c11400338c04bf9a2commit-bot@chromium.org    libutils.so \
3519a21894ead074d4c01c6b1c11400338c04bf9a2commit-bot@chromium.org    libstlport.so \
3619a21894ead074d4c01c6b1c11400338c04bf9a2commit-bot@chromium.org    libGLES_trace.so \
3719a21894ead074d4c01c6b1c11400338c04bf9a2commit-bot@chromium.org    libEGL.so \
3819a21894ead074d4c01c6b1c11400338c04bf9a2commit-bot@chromium.org    libGLESv2.so \
3919a21894ead074d4c01c6b1c11400338c04bf9a2commit-bot@chromium.org    ; do
4019a21894ead074d4c01c6b1c11400338c04bf9a2commit-bot@chromium.org    adb_pull_if_needed "${SYSTEM_LIBRARY_PATH}/${library_file}" $GDB_TMP_DIR
4119a21894ead074d4c01c6b1c11400338c04bf9a2commit-bot@chromium.orgdone
4219a21894ead074d4c01c6b1c11400338c04bf9a2commit-bot@chromium.org
4319a21894ead074d4c01c6b1c11400338c04bf9a2commit-bot@chromium.orgadb_pull_if_needed /system/bin/linker $GDB_TMP_DIR
44121b3fe6a05cff6a8354ae8b4ba4da1c8edd62c3djsollen@google.com
45cc95b1aeb8cbb9201712c9982d12149b0e0027f0djsollen@google.comecho "Pushing app..."
4644566e2a157915974cfc08819e8f9182690092a1commit-bot@chromium.orgfor file in \
4744566e2a157915974cfc08819e8f9182690092a1commit-bot@chromium.org    "${BUILD_DIR}/skia_launcher" \
4844566e2a157915974cfc08819e8f9182690092a1commit-bot@chromium.org    "${BUILD_DIR}/lib/libskia_android.so" \
4944566e2a157915974cfc08819e8f9182690092a1commit-bot@chromium.org    "${BUILD_DIR}/lib/lib${APP_NAME}.so" \
5044566e2a157915974cfc08819e8f9182690092a1commit-bot@chromium.org    ; do
5144566e2a157915974cfc08819e8f9182690092a1commit-bot@chromium.org    cp "$file" $GDB_TMP_DIR
5244566e2a157915974cfc08819e8f9182690092a1commit-bot@chromium.org    adb_push_if_needed "$file" /data/local/tmp
5344566e2a157915974cfc08819e8f9182690092a1commit-bot@chromium.orgdone
54121b3fe6a05cff6a8354ae8b4ba4da1c8edd62c3djsollen@google.com
55121b3fe6a05cff6a8354ae8b4ba4da1c8edd62c3djsollen@google.comecho "Pushing gdbserver..."
56cc95b1aeb8cbb9201712c9982d12149b0e0027f0djsollen@google.comadb_push_if_needed $ANDROID_TOOLCHAIN/../gdbserver data/local/tmp
57121b3fe6a05cff6a8354ae8b4ba4da1c8edd62c3djsollen@google.com
58121b3fe6a05cff6a8354ae8b4ba4da1c8edd62c3djsollen@google.comecho "Setting up port forward"
59121b3fe6a05cff6a8354ae8b4ba4da1c8edd62c3djsollen@google.com$ADB forward "tcp:5039" "tcp:5039"
60121b3fe6a05cff6a8354ae8b4ba4da1c8edd62c3djsollen@google.com
61cc95b1aeb8cbb9201712c9982d12149b0e0027f0djsollen@google.com# Kill all previous instances of gdbserver and the app to rid all port overriding errors.
62121b3fe6a05cff6a8354ae8b4ba4da1c8edd62c3djsollen@google.comecho "Killing any running Skia processes."
63121b3fe6a05cff6a8354ae8b4ba4da1c8edd62c3djsollen@google.com$ADB shell ps | grep gdbserver | awk '{print $2}' | xargs $ADB shell kill
64cc95b1aeb8cbb9201712c9982d12149b0e0027f0djsollen@google.com$ADB shell ps | grep ${APP_NAME} | awk '{print $2}' | xargs $ADB shell kill
65121b3fe6a05cff6a8354ae8b4ba4da1c8edd62c3djsollen@google.com
66121b3fe6a05cff6a8354ae8b4ba4da1c8edd62c3djsollen@google.com# Starting up gdbserver in android shell
6744566e2a157915974cfc08819e8f9182690092a1commit-bot@chromium.orgecho "Starting gdbserver with command: ${APP_ARGS[@]}"
68bec3634a4a0bc2ca872f8b6b7a9f445929e9f74bmtklein$ADB shell /data/local/tmp/gdbserver :5039 /data/local/tmp/skia_launcher ${APP_ARGS[@]} &
69