45 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
			
		
		
	
	
			45 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
#!/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.
 | 
						|
 | 
						|
# Get backtraces for a process.
 | 
						|
if [[ $1 =~ ^[0-9]+$ ]] ; then
 | 
						|
    PID="$1"
 | 
						|
elif [ "$1" ] ; then
 | 
						|
    # Try --exact first, and fallback to nonexact if we find nothing.
 | 
						|
    PIDLIST="$(pid --exact $1 || pid $1)"
 | 
						|
    if [[ $PIDLIST =~ ^[0-9]+$ ]] ; then
 | 
						|
        PID="$PIDLIST"
 | 
						|
    elif [ "$PIDLIST" ] ; then
 | 
						|
        echo "more than one process: $1"
 | 
						|
    else
 | 
						|
        echo "no such process: $1"
 | 
						|
    fi
 | 
						|
else
 | 
						|
    echo "usage: stacks [pid|process name]"
 | 
						|
fi
 | 
						|
 | 
						|
if [ "$PID" ] ; then
 | 
						|
    # Use `debuggerd -j` on java processes.
 | 
						|
    if adb shell readlink /proc/$PID/exe | egrep -q '^/system/bin/app_process' ; then
 | 
						|
        # But not the zygote.
 | 
						|
        if ! adb shell cat /proc/$PID/cmdline | egrep -q '^zygote'; then
 | 
						|
            adb shell debuggerd -j $PID
 | 
						|
            exit $?
 | 
						|
        fi
 | 
						|
    fi
 | 
						|
 | 
						|
    adb shell debuggerd -b $PID
 | 
						|
fi
 |