#!/bin/bash # Copyright (C) 2018 The Android Open Source Project # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. set -e . "${0%/*}"/bash_util.bash function usage() { cat 1>&2 <<"EOF" $script_name: Get heapdump from a process and open in ahat. Usage: $script_name PID_OR_PROCESS_NAME EOF exit 1 } pid="$(resolve_pid "$1" || usage)" dev_file=/data/local/tmp/heapdump.prof local_file="$(make_temp_file .prof)" info "Getting heap dump from $pid ..." do_adb shell am dumpheap -g "$pid" "$dev_file" info "Pulling the dump file to $local_file ..." do_adb pull "$dev_file" "$local_file" info "Looking for available port ..." port=$(find_open_port 11000) info "Using port $port" ( sleep 2 info "Starting the browser ..." setsid "${AHAT_BROWSER:-google-chrome}" http://localhost:$port ) & info "Opening $local_file with ahat ..." ahat -p $port "$local_file"