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