42 lines
		
	
	
		
			911 B
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
			
		
		
	
	
			42 lines
		
	
	
		
			911 B
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
| #!/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}
 |