| #!/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} |