xref: /aosp_15_r20/dalvik/tools/get-hprof (revision 055d459012065f78d96b68be8421640240ddf631)
1*055d4590SKeyi Gui#!/bin/sh
2*055d4590SKeyi Gui#
3*055d4590SKeyi Gui# Copyright (C) 2007 The Android Open Source Project
4*055d4590SKeyi Gui#
5*055d4590SKeyi Gui# Licensed under the Apache License, Version 2.0 (the "License");
6*055d4590SKeyi Gui# you may not use this file except in compliance with the License.
7*055d4590SKeyi Gui# You may obtain a copy of the License at
8*055d4590SKeyi Gui#
9*055d4590SKeyi Gui#      http://www.apache.org/licenses/LICENSE-2.0
10*055d4590SKeyi Gui#
11*055d4590SKeyi Gui# Unless required by applicable law or agreed to in writing, software
12*055d4590SKeyi Gui# distributed under the License is distributed on an "AS IS" BASIS,
13*055d4590SKeyi Gui# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14*055d4590SKeyi Gui# See the License for the specific language governing permissions and
15*055d4590SKeyi Gui# limitations under the License.
16*055d4590SKeyi Gui
17*055d4590SKeyi Gui# Grab an hprof file using adb. If an argument is specified, grab
18*055d4590SKeyi Gui# the so-named file. If no argument is specified, grab the last such file
19*055d4590SKeyi Gui# as found by using "ls".
20*055d4590SKeyi Gui
21*055d4590SKeyi GuiFILE_BASE="$1"
22*055d4590SKeyi Guiif [ "x$FILE_BASE" = "x" ]; then
23*055d4590SKeyi Gui    # Note: substr() is to get rid of the final carriage return.
24*055d4590SKeyi Gui    FILE_BASE=`adb shell ls -l '/data/misc/heap-dump*.hprof' | tail -1 | \
25*055d4590SKeyi Gui	awk '{ printf("%s", substr($7, 1, length($7) - 1)); }'`
26*055d4590SKeyi Gui    if [ "x$FILE_BASE" = "x" ]; then
27*055d4590SKeyi Gui        echo "No file base defined."
28*055d4590SKeyi Gui        exit 1
29*055d4590SKeyi Gui    fi
30*055d4590SKeyi Guifi
31*055d4590SKeyi Gui
32*055d4590SKeyi GuiFILE_BASE=/data/misc/${FILE_BASE}
33*055d4590SKeyi GuiOUT_FILE=heap-dump.hprof
34*055d4590SKeyi Gui
35*055d4590SKeyi Guiadb pull "$FILE_BASE" "$OUT_FILE"
36*055d4590SKeyi Guiif [ $? -ne 0 ]; then
37*055d4590SKeyi Gui    echo "Failed pulling $FILE_BASE."
38*055d4590SKeyi Gui    exit 1
39*055d4590SKeyi Guifi
40*055d4590SKeyi Guiecho "hat $OUT_FILE"
41*055d4590SKeyi Guiexit 0
42