Advertisement
Guest User

xash3d-gdb-launcher

a guest
Apr 26th, 2017
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 2.80 KB | None | 0 0
  1. #!/system/bin/sh
  2. # default commands
  3. LOGCAT_BIN="su 0 logcat"
  4. SLEEP_BIN=sleep
  5. ADDR2LINE_BIN=addr2line
  6. TAIL_BIN=tail
  7. # do not use gdb and gdbserver coming with termux,
  8. #  it is a segfaulting bullshit (compiled with clang???)
  9. GDBSERVER_BIN="su 0 ./gdbserver"
  10. GDB_BIN=~/arm-linux-androideabi-gdb
  11. # prevent ^C killing logcat
  12. BLOCKINT_BIN=~/blockint
  13. # shitty logcat switching terminal to CRLF, workaround it by \r
  14. PRINTF_BIN=printf
  15. CUT_BIN=cut
  16. AM_BIN=am
  17. KILLALL_BIN=killall
  18. KILLALL_ROOT_BIN="su 0 killall"
  19. # default options
  20. VARS=
  21. MODARGS=
  22. # for some reason it is -2 when not running from root
  23. USER=0
  24. ARGS=
  25. LOGCAT=
  26. PID=
  27. MOD=
  28. GDB=
  29. DELAY=1s
  30. GDBARGS=
  31. CR="$PRINTF_BIN \\r"
  32. while [ -n "$1" ]; do
  33. case $1 in
  34. *=*) VARS=$VARS$(echo $1|$CUT_BIN -d\= -f1),$(echo $1|$CUT_BIN -d= -f2),;shift 1 ;;
  35. -e) MODARGS="$MODARGS -e $2";shift 2;;
  36. -m) MODARGS="$MODARGS -e gamelibdir /data/data/in.celest.xash3d.$2/lib";MOD=$2;shift 2;;
  37. -h) echo Usage: startxash [-m modname] [-g gamedir] [ENV1=VALUE1] [args]; exit 0 ;;
  38. -g) MODARGS="$MODARGS -e gamedir $2";shift 2;;
  39. -u) USER=$2;shift 2;;
  40. -l) LOGCAT=1;$LOGCAT_BIN -G64k;$LOGCAT_BIN -c;shift 1;;
  41. -gdb) GDB=1;$LOGCAT_BIN -G64k;$LOGCAT_BIN -c;MODARGS="$MODARGS -e gdbsafe 1";shift 1;;
  42. -d) DELAY=$2;shift 2;;
  43. -c) GDBARGS="$GDBARGS -ex c";shift 1;;
  44. -log) LOG=1;ARGS="$ARGS$1 ";shift 1;;
  45. *) ARGS="$ARGS$1 ";shift 1 ;;
  46. esac
  47. done
  48.  
  49. _addr2line()
  50. {
  51. addr2line -fCpi -e $7 $6|while read line; do echo "$line";$CR;done
  52. }
  53. runlogcat()
  54. {
  55. $BLOCKINT_BIN $LOGCAT_BIN  < /dev/null|while read line;do
  56. case $line in
  57. I/ActivityManager*:\ Start\ proc\ *in.celest.xash3d.hl.test*)
  58. PID=$(echo $line|$CUT_BIN -d: -f2| $CUT_BIN -d\  -f4)
  59. $PRINTF_BIN Found\ PID:$PID\\r\\n
  60. if [ -n "$GDB" ]; then
  61. $SLEEP_BIN $DELAY
  62. $GDBSERVER_BIN --attach 127.0.0.1:6666 $(pidof in.celest.xash3d.hl.test) &
  63. fi
  64. echo "$line" ;;
  65. *\(*$PID*\):*) echo "$line";;
  66. ?/ActivityManager*\(pid\ $PID\)\ has\ died*) $KILLALL_ROOT_BIN logcat;echo end;;
  67. ?/DEBUG*\):*\#*)
  68. echo "$line"
  69. _addr2line $(echo $line|$CUT_BIN -d $($CR) -f1)
  70. ;;
  71. ?/DEBUG*\):*) echo "$line";;
  72. ?/AndroidRuntime*\):*) echo "$line";;
  73. *) ;;
  74. esac
  75. done
  76. }
  77. $AM_BIN start --user $USER -a in.celest.xash3d.START -n in.celest.xash3d.hl.test/in.celest.xash3d.XashActivity  -e argv "$ARGS" --esa env "$VARS" $MODARGS
  78. if [ -n "$LOGCAT" ]; then
  79. runlogcat
  80. elif [ -n "$GDB" ]; then
  81. runlogcat &
  82. $SLEEP_BIN $DELAY
  83. $GDB_BIN -ex "set solib-search-path /data/data/in.celest.xash3d.$MOD/lib:/data/data/in.celest.xash3d.hl.test/lib:/system/lib/hw:/system/lib:/vendor/lib" -ex "file /system/bin/app_process" -ex "target remote 127.0.0.1:6666" -ex "handle SIG33 nostop" -ex "thread 1" $GDBARGS
  84. $KILLALL_ROOT logcat
  85.  
  86. elif [ -n "$LOG" ]; then
  87. $TAIL_BIN -c0 -f $LOG| while read line; do case $line in
  88. *Sys_DestroyConsole:*) $KILLALL_BIN tail;;
  89. *) echo "$line";;esac;done
  90. fi
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement