Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4423)

Unified Diff: build/android/gdb_apk

Issue 10736027: Enhancement for gdb_content_shell, allow set package_name and shared_lib_dir (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Refine the patch Created 8 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | build/android/gdb_content_shell » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: build/android/gdb_apk
diff --git a/build/android/gdb_content_shell b/build/android/gdb_apk
similarity index 60%
copy from build/android/gdb_content_shell
copy to build/android/gdb_apk
index 2f0b9830c6fbe4ac3d2bd9653257d4ddb2e17687..bcdcd243a6ddcab5fc06e630e0c167a1147dc682 100755
--- a/build/android/gdb_content_shell
+++ b/build/android/gdb_apk
@@ -4,12 +4,13 @@
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
#
-# Attach gdb to a running content shell. Similar to ndk-gdb.
+# Attach gdb to a running android application. Similar to ndk-gdb.
# Run with --annotate=3 if running under emacs (M-x gdb).
#
-# TODO(jrg): allow package_name and shared_lib_dir to be set on the
-# command line. Share the guts of this script with other Chromium
-# pieces (like base_unittests_apk) and friends (like WebKit bundles).
+# By default it is used to debug content shell, if it is used to
+# debug other piceces, '-p' and '-l' options are needed.
+# For *unittests_apk (like base_unittests_apk), run with:
+# "gdb_apk -p org.chromium.native_test -l out/Release/lib.target -r"
adb=$(which adb)
if [[ "$adb" = "" ]] ; then
@@ -17,13 +18,63 @@ if [[ "$adb" = "" ]] ; then
exit 1
fi
+usage() {
+ echo "usage: ${0##*/} [-p package_name] [-l shared_lib_dir] [-g gdb] [-r]"
+ echo "-p package_name the android APK package to be debugged"
+ echo "-l shared_lib_dir directory containes native shared library"
+ echo "-g gdb_args agruments for gdb, eg: -g '-n -write'"
+ echo "-r the target device is rooted"
+}
+
+process_options() {
+ local OPTNAME OPTIND OPTERR OPTARG
+ while getopts ":p:l:g:r" OPTNAME; do
+ case "$OPTNAME" in
+ p)
+ package_name="$OPTARG"
+ ;;
+ l)
+ shared_lib_dir="$OPTARG"
+ ;;
+ g)
+ gdb_args="$OPTARG"
+ ;;
+ r)
+ rooted_phone=1
+ ;;
+ \:)
+ echo "'-$OPTARG' needs an argument."
+ usage
+ exit 1
+ ;;
+ *)
+ echo "invalid command line option: $OPTARG"
+ usage
+ exit 1
+ ;;
+ esac
+ done
+
+ if [ $# -ge ${OPTIND} ]; then
+ eval echo "Unexpected command line argument: \${${OPTIND}}"
+ usage
+ exit 1
+ fi
+}
+
rooted_phone=0
root=$(dirname $0)/../..
package_name=org.chromium.content_shell
+shared_lib_dir=$root/out/Release/lib.target
+gdb_args=''
+
+#process options
+process_options "$@"
+echo "Debug package $package_name"
+
data_dir=/data/data/$package_name
gdb_server_on_device=$data_dir/lib/gdbserver
-shared_lib_dir=$root/out/Release/lib.target
# Kill any running gdbserver
pid=$(adb shell ps | awk '/gdbserver/ {print $2}')
@@ -84,5 +135,5 @@ else
fi
# ${gdb} -x $cmdfile $* $app_process
-${gdb} -x $cmdfile $*
+${gdb} -x $cmdfile $gdb_args
rm $cmdfile
« no previous file with comments | « no previous file | build/android/gdb_content_shell » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698