Index: build/android/adb_profile_chrome |
diff --git a/build/android/adb_profile_chrome b/build/android/adb_profile_chrome |
index 46dec3742b0975185bfe44008272063f11a76d9a..00b119918bafbef2bacfc53a86264240ecdd2cf9 100755 |
--- a/build/android/adb_profile_chrome |
+++ b/build/android/adb_profile_chrome |
@@ -5,169 +5,4 @@ |
# found in the LICENSE file. |
# |
# Start / stop profiling in chrome. |
- |
-# The profiling data is saved to directory /sdcard/Download. The files |
-# are named beginning chrome-profile-results- |
-# |
-# Assumes you have sourced the android build environment script |
-# (e.g. 'adb' is on your path). |
-set -e |
- |
-usage() { |
- echo "adb_profile_chrome [--start [-o file] [-c C]|--stop|-d|-t N] [-v N]" |
- echo "See http://dev.chromium.org/developers/how-tos/trace-event-profiling-tool for detailed instructions on profiling." |
- echo "" |
- echo " --start Start profiling." |
- echo " --output|-o file Save profile output to file. " |
- echo " (Default is /sdcard/Download/chrome-profile-results-*)" |
- echo " --categories|-c C Select categories to trace with comma-delimited wildcards." |
- echo " e.g. '*', 'cat1*,-cat1a'. Default is '*'." |
- echo " --continuous Using the trace buffer as a ring buffer, continuously" |
- echo " profile until stopped." |
- echo " --stop Stop profiling." |
- echo " --download|-d Download latest trace." |
- echo " --time|-t N Profile for N seconds and download the resulting trace." |
- echo " --version|v N Select among installed browsers." |
- echo " One of stable (default), beta, dev, build" |
- echo "" |
- echo "Profiling data is saved to the device." |
- exit 0 |
-} |
- |
-send_intent() { |
- local PACKAGE=$1 |
- local INTENT=$2 |
- shift |
- shift |
- adb shell am broadcast -a $PACKAGE.$INTENT $* |
-} |
- |
-download_latest_trace() { |
- (adb logcat -d | grep -q "Logging performance trace to file") || { |
- echo "WARNING: Trace start marker not found. Is the correct version of Chrome running?" |
- } |
- |
- local ITERATION=0 |
- while true; do |
- # Chrome logs two different messages related to tracing: |
- # |
- # 1. "Logging performance trace to file [...]" |
- # 2. "Profiler finished. Results are in [...]" |
- # |
- # The first one is printed when tracing starts and the second one indicates |
- # that the trace file is ready to be downloaded. |
- # |
- # We have to look for both of these messages to make sure we get the results |
- # from the latest trace and that the trace file is complete. This is done by |
- # first looking for the last instance of the first message and then checking |
- # for the second message in the remaining part of the log. |
- TRACE_FILE=$(adb logcat -d | \ |
- tac | \ |
- grep --max-count=1 --before-context=100000 "Logging performance trace to file" | \ |
- tac | \ |
- grep "Profiler finished[.] Results are in " | \ |
- perl -pi -e "s{.*/storage/emulated/.+/([^\r]+)[.].*}{/sdcard/Download/\\1}g") |
- if [ -n "$TRACE_FILE" ]; then |
- break |
- fi |
- if [ $ITERATION -eq 0 ]; then |
- echo -n "Waiting for Chrome to finish tracing..." |
- else |
- echo -n "." |
- fi |
- let ITERATION=ITERATION+1 |
- if [ $ITERATION -eq 60 ]; then |
- echo "Timed out" |
- exit 1 |
- fi |
- sleep 1 |
- done |
- |
- adb pull $TRACE_FILE 2> /dev/null |
- LOCAL_TRACE_FILE=$(basename $TRACE_FILE) |
- if [ ! -f "$LOCAL_TRACE_FILE" ]; then |
- echo "Unable to download trace file" |
- exit 1 |
- fi |
-} |
- |
-do_timed_capture() { |
- local PACKAGE=$1 |
- local INTERVAL=$2 |
- shift |
- shift |
- echo -n "Capturing trace..." |
- send_intent ${PACKAGE} "GPU_PROFILER_START" $* > /dev/null |
- sleep ${INTERVAL} |
- send_intent ${PACKAGE} "GPU_PROFILER_STOP" > /dev/null |
- echo "done" |
- |
- echo -n "Downloading trace..." |
- sleep $[${INTERVAL} / 4 + 1] |
- download_latest_trace |
- echo "done" |
- |
- echo "Trace written to ${PWD}/${LOCAL_TRACE_FILE}" |
-} |
- |
-PACKAGE=${DEFAULT_PACKAGE:-com.android.chrome} |
- |
-while test -n "$1"; do |
- case "$1" in |
- -v|--version) |
- if [[ -z "$2" ]] ; then |
- usage |
- fi |
- shift |
- case "$1" in |
- stable) PACKAGE="com.android.chrome" ;; |
- beta) PACKAGE="com.chrome.beta" ;; |
- dev) PACKAGE="com.google.android.apps.chrome_dev" ;; |
- build) PACKAGE="com.google.android.apps.chrome" ;; |
- *) usage ;; |
- esac |
- ;; |
- --start) FUNCTION="GPU_PROFILER_START" ;; |
- --stop) FUNCTION="GPU_PROFILER_STOP" ;; |
- -o|--output) |
- if [ -z "$2" ] ; then |
- usage |
- fi |
- OUTPUT="-e file '$2'" |
- shift |
- ;; |
- -c|--categories) |
- if [ -z "$2" ]; then |
- usage |
- fi |
- CATEGORIES="-e categories '$2'" |
- shift |
- ;; |
- --continuous) CONTINUOUS="-e continuous ." ;; |
- -t|--time) |
- shift |
- if [ -z "$1" ] ; then |
- usage |
- fi |
- INTERVAL="$1" |
- ;; |
- -d|--download) |
- shift |
- download_latest_trace |
- echo "Trace written to ${PWD}/${LOCAL_TRACE_FILE}" |
- ;; |
- *) usage ;; |
- esac |
- shift |
-done |
- |
-if [ -z "${INTERVAL}" ] ; then |
- if [ -z "${FUNCTION}" ] ; then |
- usage |
- else |
- send_intent ${PACKAGE} ${FUNCTION} ${OUTPUT} ${CATEGORIES} ${CONTINUOUS} |
- fi |
-else |
- do_timed_capture ${PACKAGE} ${INTERVAL} ${CATEGORIES} ${CONTINUOUS} |
-fi |
-exit 0 |
+exec $(dirname $0)/adb_profile_chrome.py $@ |