| Index: build/android/adb_profile_chrome
|
| diff --git a/build/android/adb_profile_chrome b/build/android/adb_profile_chrome
|
| new file mode 100755
|
| index 0000000000000000000000000000000000000000..727916b5ad1b94215769fcf1b36af73ed1d89d48
|
| --- /dev/null
|
| +++ b/build/android/adb_profile_chrome
|
| @@ -0,0 +1,139 @@
|
| +#!/bin/bash
|
| +#
|
| +# Copyright (c) 2013 The Chromium Authors. All rights reserved.
|
| +# Use of this source code is governed by a BSD-style license that can be
|
| +# 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 " --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() {
|
| + TRACE_FILE=$(adb logcat -d | \
|
| + grep "Logging performance trace to file: " | \
|
| + tail -1 | \
|
| + sed -E "s/.*\/storage\/emulated\/.+\/([^\r]+).*/\/sdcard\/Download\/\\1/")
|
| + if [ -z "$TRACE_FILE" ]; then
|
| + echo "Unable to determine trace file name"
|
| + exit 1
|
| + fi
|
| +
|
| + 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
|
| + ;;
|
| + -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}
|
| + fi
|
| +else
|
| + do_timed_capture ${PACKAGE} ${INTERVAL} ${CATEGORIES}
|
| +fi
|
| +exit 0
|
|
|