mirror of
https://github.com/schwabe/ics-openvpn.git
synced 2024-09-20 03:52:27 +02:00
a12468dd17
--HG-- extra : rebase_source : ff78e2c27c8f0edb6fc2511c04489a1102de2592
110 lines
2.9 KiB
Bash
Executable File
110 lines
2.9 KiB
Bash
Executable File
#!/bin/bash
|
|
#NDK_DEBUG=1 ndk-build -j8
|
|
# Quick and dirty from ndk-gdb
|
|
|
|
. ${ANDROID_NDK_HOME}/build/tools/ndk-common.sh
|
|
|
|
ANDROID_NDK_ROOT=${ANDROID_NDK_HOME}
|
|
PROJECT=.
|
|
APP_ABI=armeabi-v7a
|
|
|
|
AWK_SCRIPTS=${ANDROID_NDK_ROOT}/build/awk
|
|
PACKAGE_NAME=de.blinkt.openvpn
|
|
DEBUG_PORT=5039
|
|
JDB_PORT=65534
|
|
|
|
ADB_CMD=adb
|
|
AWK_CMD=awk
|
|
|
|
get_build_var ()
|
|
{
|
|
if [ -z "$GNUMAKE" ] ; then
|
|
GNUMAKE=make
|
|
fi
|
|
$GNUMAKE --no-print-dir -f $ANDROID_NDK_ROOT/build/core/build-local.mk -C $PROJECT DUMP_$1 | tail -1
|
|
}
|
|
|
|
get_build_var_for_abi ()
|
|
{
|
|
if [ -z "$GNUMAKE" ] ; then
|
|
GNUMAKE=make
|
|
fi
|
|
$GNUMAKE --no-print-dir -f $ANDROID_NDK_ROOT/build/core/build-local.mk -C $PROJECT DUMP_$1 APP_ABI=$2 | tail -1
|
|
}
|
|
|
|
native_path ()
|
|
{
|
|
echo "$1"
|
|
}
|
|
|
|
adb_cmd ()
|
|
{
|
|
if [ "x$DEVICE_SERIAL" = "x" ]; then
|
|
"$ADB_CMD" $ADB_FLAGS "$@"
|
|
else
|
|
# NOTE: We escape $ADB_CMD and $DEVICE_SERIAL in case they contains spaces.
|
|
"$ADB_CMD" $ADB_FLAGS "$DEVICE_SERIAL" "$@"
|
|
fi
|
|
}
|
|
|
|
get_pid_of ()
|
|
{
|
|
adb_cmd shell ps | $AWK_CMD -f $AWK_SCRIPTS/extract-pid.awk -v PACKAGE="$1"
|
|
}
|
|
|
|
|
|
adb_cmd push libs/armeabi-v7a/gdbserver /data/local/tmp/
|
|
|
|
PID=$(get_pid_of /data/data/de.blinkt.openvpn/cache/miniopenvpn)
|
|
|
|
|
|
DEBUG_SOCKET=localhost:7788
|
|
echo " GDB RUN: adb_cmd shell run-as $PACKAGE_NAME /data/local/tmp/gdbserver +$DEBUG_SOCKET --attach $PID"
|
|
run adb_cmd shell run-as $PACKAGE_NAME /data/local/tmp/gdbserver +$DEBUG_SOCKET --attach $PID &
|
|
|
|
if [ $? != 0 ] ; then
|
|
echo "ERROR: Could not launch gdbserver on the device?"
|
|
exit 1
|
|
fi
|
|
log "Launched gdbserver succesfully."
|
|
|
|
# Setup network redirection
|
|
log "Setup network redirection"
|
|
run adb_cmd forward tcp:$DEBUG_PORT localhost:7788
|
|
if [ $? != 0 ] ; then
|
|
echo "ERROR: Could not setup network redirection to gdbserver?"
|
|
echo " Maybe using --port=<port> to use a different TCP port might help?"
|
|
exit 1
|
|
fi
|
|
|
|
#APP_OUT=`get_build_var_for_abi TARGET_OUT $COMPAT_ABI`
|
|
APP_OUT='obj/local/armeabi-v7a/'
|
|
log "Using app out directory: $APP_OUT"
|
|
|
|
TOOLCHAIN_PREFIX=`get_build_var_for_abi TOOLCHAIN_PREFIX $COMPAT_ABI`
|
|
log "Using toolchain prefix: $TOOLCHAIN_PREFIX"
|
|
|
|
#run adb_cmd pull /system/bin/app_process `native_path $APP_PROCESS`
|
|
#log "Pulled app_process from device/emulator."
|
|
|
|
run adb_cmd pull /system/bin/linker `native_path $APP_OUT/linker`
|
|
log "Pulled linker from device/emulator."
|
|
|
|
run adb_cmd pull /system/lib/libc.so `native_path $APP_OUT/libc.so`
|
|
log "Pulled libc.so from device/emulator."
|
|
|
|
GDBCLIENT=${TOOLCHAIN_PREFIX}gdb
|
|
GDBSETUP=$APP_OUT/gdb.setup
|
|
#cp -f $GDBSETUP_INIT $GDBSETUP
|
|
|
|
#uncomment the following to debug the remote connection only
|
|
#echo "set debug remote 1" >> $GDBSETUP
|
|
|
|
#echo "file `native_path $APP_PROCESS`" >> $GDBSETUP
|
|
echo "file `native_path ${APP_OUT}/minivpn`" >> $GDBSETUP
|
|
echo "target remote :$DEBUG_PORT" >> $GDBSETUP
|
|
#if [ -n "$OPTION_EXEC" ] ; then
|
|
# cat $OPTION_EXEC >> $GDBSETUP
|
|
#fi
|
|
$GDBCLIENT -x `native_path $GDBSETUP`
|