| #!/bin/bash |
| |
| TRACE_DIR=/data/misc/anrd |
| TRACE_FILE_PATTEN=dump_of_anrdaemon |
| |
| if [ $# -eq 1 ]; then |
| DEVICE=$(echo "-s $1") |
| else |
| DEVICE="" |
| fi |
| |
| PID=$(adb $DEVICE shell "ps | grep anrd") |
| |
| if [ $? -ne 0 ]; then |
| echo "FAILED. ADB failed or Daemon is not running." |
| exit 1 |
| fi |
| |
| PID=$(echo "$PID" | awk '{ print $2 }') |
| adb $DEVICE shell "kill -s SIGUSR1 $PID" |
| |
| TRACE_FILE=$(adb $DEVICE shell "ls $TRACE_DIR \ |
| | grep $TRACE_FILE_PATTEN | tail -n1" | tr -d '\r') |
| |
| # Wiat the trace file generation to complete |
| adb $DEVICE shell "lsof -p $PID" | grep $TRACE_FILE > /dev/null |
| while [ $? -eq 0 ]; |
| do |
| sleep 1 |
| adb $DEVICE shell "lsof -p $PID" | grep "$TRACE_FILE" > /dev/null |
| done |
| |
| if [ -z "$TRACE_FILE" ]; then |
| echo "FAILED. Trace file not created" |
| fi |
| |
| adb $DEVICE pull "${TRACE_DIR}/${TRACE_FILE}" ${TRACE_FILE} |
| |
| CURRENT_DIR=$(pwd) |
| echo SUCCEED! |
| echo Trace stored at ${CURRENT_DIR}/${TRACE_FILE} |