OLD | NEW |
1 #!/bin/bash | 1 #!/bin/bash |
2 # | 2 # |
3 # Copyright (c) 2012 The Chromium Authors. All rights reserved. | 3 # Copyright (c) 2012 The Chromium Authors. All rights reserved. |
4 # Use of this source code is governed by a BSD-style license that can be | 4 # Use of this source code is governed by a BSD-style license that can be |
5 # found in the LICENSE file. | 5 # found in the LICENSE file. |
6 # | 6 # |
7 | 7 |
8 # A generic script used to attach to a running Chromium process and | 8 # A generic script used to attach to a running Chromium process and |
9 # debug it. Most users should not use this directly, but one of the | 9 # debug it. Most users should not use this directly, but one of the |
10 # wrapper scripts like adb_gdb_content_shell | 10 # wrapper scripts like adb_gdb_content_shell |
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
114 ;; | 114 ;; |
115 --annotate=3) | 115 --annotate=3) |
116 ANNOTATE=$optarg | 116 ANNOTATE=$optarg |
117 ;; | 117 ;; |
118 --force) | 118 --force) |
119 FORCE=true | 119 FORCE=true |
120 ;; | 120 ;; |
121 --gdbserver=*) | 121 --gdbserver=*) |
122 GDBSERVER=$optarg | 122 GDBSERVER=$optarg |
123 ;; | 123 ;; |
| 124 --gdb=*) |
| 125 GDB=$optarg |
| 126 ;; |
124 --help|-h|-?) | 127 --help|-h|-?) |
125 HELP=true | 128 HELP=true |
126 ;; | 129 ;; |
127 --ndk-dir=*) | 130 --ndk-dir=*) |
128 NDK_DIR=$optarg | 131 NDK_DIR=$optarg |
129 ;; | 132 ;; |
130 --no-pull-libs) | 133 --no-pull-libs) |
131 NO_PULL_LIBS=true | 134 NO_PULL_LIBS=true |
132 ;; | 135 ;; |
133 --package-name=*) | 136 --package-name=*) |
(...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
295 --package-name=<name> Specify package name (alternative to 1st argument). | 298 --package-name=<name> Specify package name (alternative to 1st argument). |
296 --program-name=<name> Specify program name (cosmetic only). | 299 --program-name=<name> Specify program name (cosmetic only). |
297 --pid=<pid> Specify application process pid. | 300 --pid=<pid> Specify application process pid. |
298 --force Kill any previous debugging session, if any. | 301 --force Kill any previous debugging session, if any. |
299 --start Start package's activity on device. | 302 --start Start package's activity on device. |
300 --ui Use gdbtui instead of gdb | 303 --ui Use gdbtui instead of gdb |
301 --activity=<name> Activity name for --start [$DEFAULT_ACTIVITY]. | 304 --activity=<name> Activity name for --start [$DEFAULT_ACTIVITY]. |
302 --annotate=<num> Enable gdb annotation. | 305 --annotate=<num> Enable gdb annotation. |
303 --script=<file> Specify extra GDB init script. | 306 --script=<file> Specify extra GDB init script. |
304 | 307 |
305 --gdbserver=<file> Specify targer gdbserver binary. | 308 --gdbserver=<file> Specify target gdbserver binary. |
306 --gdb=<program> Specify host gdb client binary. | 309 --gdb=<file> Specify host gdb client binary. |
307 --target-arch=<name> Specify NDK target arch. | 310 --target-arch=<name> Specify NDK target arch. |
308 --adb=<program> Specify host ADB binary. | 311 --adb=<file> Specify host ADB binary. |
309 | 312 |
310 --su-prefix=<prefix> Prepend <prefix> to 'adb shell' commands that are | 313 --su-prefix=<prefix> Prepend <prefix> to 'adb shell' commands that are |
311 run by this script. This can be useful to use | 314 run by this script. This can be useful to use |
312 the 'su' program on rooted production devices. | 315 the 'su' program on rooted production devices. |
313 | 316 |
314 --pull-libs Force system libraries extraction. | 317 --pull-libs Force system libraries extraction. |
315 --no-pull-libs Do not extract any system library. | 318 --no-pull-libs Do not extract any system library. |
316 --libs-dir=<path> Specify system libraries extraction directory. | 319 --libs-dir=<path> Specify system libraries extraction directory. |
317 | 320 |
318 --debug Use libraries under out/Debug. | 321 --debug Use libraries under out/Debug. |
(...skipping 216 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
535 if [ -d "$TOOLCHAIN/bin" ]; then | 538 if [ -d "$TOOLCHAIN/bin" ]; then |
536 TOOLCHAIN=$TOOLCHAIN/bin | 539 TOOLCHAIN=$TOOLCHAIN/bin |
537 fi | 540 fi |
538 ANDROID_TOOLCHAIN=$TOOLCHAIN | 541 ANDROID_TOOLCHAIN=$TOOLCHAIN |
539 fi | 542 fi |
540 | 543 |
541 # Cosmetic: Remove trailing directory separator. | 544 # Cosmetic: Remove trailing directory separator. |
542 ANDROID_TOOLCHAIN=${ANDROID_TOOLCHAIN%/} | 545 ANDROID_TOOLCHAIN=${ANDROID_TOOLCHAIN%/} |
543 | 546 |
544 # Find host GDB client binary | 547 # Find host GDB client binary |
545 GDB=$(which $ANDROID_TOOLCHAIN/*-$GDBEXEPOSTFIX 2>/dev/null | head -1) | |
546 if [ -z "$GDB" ]; then | 548 if [ -z "$GDB" ]; then |
547 panic "Can't find Android gdb client in your path, check your \ | 549 GDB=$(which $ANDROID_TOOLCHAIN/*-$GDBEXEPOSTFIX 2>/dev/null | head -1) |
548 --toolchain path." | 550 if [ -z "$GDBSERVER" ]; then |
| 551 panic "Can't find Android gdb client in your path, check your \ |
| 552 --toolchain or --gdb path." |
| 553 fi |
| 554 log "Host gdb client: $GDB" |
549 fi | 555 fi |
550 log "Host gdb client: $GDB" | |
551 | 556 |
552 # Find gdbserver binary, we will later push it to /data/local/tmp | 557 # Find gdbserver binary, we will later push it to /data/local/tmp |
553 # This ensures that both gdbserver and $GDB talk the same binary protocol, | 558 # This ensures that both gdbserver and $GDB talk the same binary protocol, |
554 # otherwise weird problems will appear. | 559 # otherwise weird problems will appear. |
555 # | 560 # |
556 if [ -z "$GDBSERVER" ]; then | 561 if [ -z "$GDBSERVER" ]; then |
557 GDBSERVER=$(get_ndk_gdbserver "$ANDROID_NDK_ROOT" "$TARGET_ARCH") | 562 GDBSERVER=$(get_ndk_gdbserver "$ANDROID_NDK_ROOT" "$TARGET_ARCH") |
558 if [ -z "$GDBSERVER" ]; then | 563 if [ -z "$GDBSERVER" ]; then |
559 panic "Can't find NDK gdbserver binary. use --gdbserver to specify \ | 564 panic "Can't find NDK gdbserver binary. use --gdbserver to specify \ |
560 valid one!" | 565 valid one!" |
(...skipping 318 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
879 # so we can add them to solib-search-path later. | 884 # so we can add them to solib-search-path later. |
880 SOLIB_DIRS=$(find $PULL_LIBS_DIR -mindepth 1 -maxdepth 4 -type d | \ | 885 SOLIB_DIRS=$(find $PULL_LIBS_DIR -mindepth 1 -maxdepth 4 -type d | \ |
881 grep -v "^$" | tr '\n' ':') | 886 grep -v "^$" | tr '\n' ':') |
882 | 887 |
883 # This is a re-implementation of gdbclient, where we use compatible | 888 # This is a re-implementation of gdbclient, where we use compatible |
884 # versions of gdbserver and $GDBNAME to ensure that everything works | 889 # versions of gdbserver and $GDBNAME to ensure that everything works |
885 # properly. | 890 # properly. |
886 # | 891 # |
887 | 892 |
888 # Push gdbserver to the device | 893 # Push gdbserver to the device |
889 log "Pushing gdbserver to $TARGET_GDBSERVER" | 894 log "Pushing gdbserver $GDBSERVER to $TARGET_GDBSERVER" |
890 adb push $GDBSERVER $TARGET_GDBSERVER &>/dev/null | 895 adb push $GDBSERVER $TARGET_GDBSERVER &>/dev/null |
891 fail_panic "Could not copy gdbserver to the device!" | 896 fail_panic "Could not copy gdbserver to the device!" |
892 | 897 |
893 PORT=5039 | 898 PORT=5039 |
894 HOST_PORT=$PORT | 899 HOST_PORT=$PORT |
895 TARGET_PORT=$PORT | 900 TARGET_PORT=$PORT |
896 | 901 |
897 # Pull the app_process binary from the device | 902 # Pull the app_process binary from the device |
898 GDBEXEC=app_process | 903 GDBEXEC=app_process |
899 log "Pulling $GDBEXEC from device" | 904 log "Pulling $GDBEXEC from device" |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
954 | 959 |
955 if [ "$VERBOSE" -gt 0 ]; then | 960 if [ "$VERBOSE" -gt 0 ]; then |
956 echo "### START $COMMANDS" | 961 echo "### START $COMMANDS" |
957 cat $COMMANDS | 962 cat $COMMANDS |
958 echo "### END $COMMANDS" | 963 echo "### END $COMMANDS" |
959 fi | 964 fi |
960 | 965 |
961 log "Launching gdb client: $GDB $GDBARGS -x $COMMANDS" | 966 log "Launching gdb client: $GDB $GDBARGS -x $COMMANDS" |
962 $GDB $GDBARGS -x $COMMANDS && | 967 $GDB $GDBARGS -x $COMMANDS && |
963 rm -f "$GDBSERVER_PIDFILE" | 968 rm -f "$GDBSERVER_PIDFILE" |
OLD | NEW |