1#!/bin/bash 2 3# Copyright (C) 2024 The Android Open Source Project 4# 5# Licensed under the Apache License, Version 2.0 (the "License"); 6# you may not use this file except in compliance with the License. 7# You may obtain a copy of the License at 8# 9# http://www.apache.org/licenses/LICENSE-2.0 10# 11# Unless required by applicable law or agreed to in writing, software 12# distributed under the License is distributed on an "AS IS" BASIS, 13# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14# See the License for the specific language governing permissions and 15# limitations under the License. 16 17# core - send SIGV and pull the core for process 18# $1 = PID of process (e.g., $(pid mediaserver)) 19# 20# NOTE: coredump_setup must be called once per boot for core dumps to be 21# enabled globally. 22 23set -e 24 25PID=$1; 26 27if [ -z "$PID" ]; then 28 printf "Expecting a PID!\n"; 29 exit 1 30fi; 31 32CORENAME=core.$PID; 33COREPATH=/cores/$CORENAME; 34SIG=SEGV; 35 36coredump_enable $1; 37 38done=0; 39while [ $(adb shell "[ -d /proc/$PID ] && echo -n yes") ]; do 40 printf "\tSending SIG%s to %d...\n" $SIG $PID; 41 adb shell kill -$SIG $PID; 42 sleep 1; 43done; 44 45adb shell "while [ ! -f $COREPATH ] ; do echo waiting for $COREPATH to be generated; sleep 1; done" 46echo "Done: core is under $COREPATH on device."; 47 48 49