mallocCase.sh
adb root
setenforce 0
chmod 0777 /data/local/tmp/
setprop libc.debug.malloc.program android.hardware.camera.provider@2.4-service
setprop libc.debug.malloc.options "guard leak_track free_track verbose backtrace_full"
setprop wrap.com.oplus.camera "LIBC_DEBUG_MALLOC_OPTIONS=backtrace"
ls /sys/devices/system/cpu/cpufreq/
echo performance > /sys/devices/system/cpu/cpufreq/policy0/scaling_governor
echo performance > /sys/devices/system/cpu/cpufreq/policy4/scaling_governor
echo performance > /sys/devices/system/cpu/cpufreq/policy7/scaling_governor
#stop
##setprop libc.debug.malloc.program bruce-leak
#setprop libc.debug.malloc.program android.hardware.camera.provider@2.4-service_64
##setprop libc.debug.malloc.options "backtrace_enable_on_signal leak_track backtrace=8 guard"
##setprop libc.debug.malloc.options "backtrace_enable_on_signal leak_track backtrace=8"
#setprop libc.debug.malloc.options "leak_track backtrace=8 guard"
#start
psstr=`ps -A | grep "android.hardware.camera.provider@2.4-service_64"`
pid=`echo $psstr | awk -F ' ' '{print $2}'`
echo "dump pid = "${pid}
ps -A | grep camera
kill -9 $pid #android.hardware.camera.provider@2.4-service_64
psstr=`ps -A | grep "android.hardware.camera.provider@2.4-service_64"`
pid=`echo $psstr | awk -F ' ' '{print $2}'`
echo "dump new pid = "${pid}
#cat /proc/<pid>/smaps | grep malloc_debug
#chg_exchange_mesg: failed to cmd(=0) run, rc=-1
#showmap <pid> > /sdcard/showmap-camx.txt
#showmap <pid> > /sdcard/showmap-app.txt
#dumpsys meminfo android.hardware.camera.provider@2.4-service_64 > /sdcard/meminfo-camx.txt
#dumpsys meminfo com.oplus.camera > /sdcard/meminfo-app.txt
#kill -45 $pid #android.hardware.camera.provider@2.4-service_64
getprop | grep malloc
logcat -s malloc_debug DEBUG
#复现问题 logcat | grep -iE " pc | at "
#kill -47 <pid> //停止调试并dump backtrace
#am dumpheap -n <pid> /data/local/tmp/temp.txt //不能创建文件时使用
malloc_debug.bat
adb root && adb remount
adb disable-verity
adb push malloc-debug.sh /data/
adb shell chmod 777 /data/malloc.sh
adb shell setenforce 0
adb shell
rem PAUSE
rem adb reboot
malloc-deug.sh
if [[ $1 == "--help" || $1 == "help" ]]; then
echo "----------usage-------"
echo "enable dump records_malloc, the malloc debug will use multiple memeory"
echo "---------command: malloc_debug.sh logpath [records_malloc]"
echo "disable dump records_malloc"
echo "---------command: malloc_debug.sh logpath"
exit
elif [[ $1 == "" ]]; then
echo "malloc_debug.sh --help"
exit
fi
logpath=$1
records_malloc_enable=$2
adb root
adb wait-for-device
#need close selinux, others dump failure
adb shell setenforce 0
psstr=`adb shell ps -A | grep "android.hardware.camera.provider@2.4-service_64"`
pid=`echo $psstr | awk -F ' ' '{print $2}'`
echo "dump pid = "${pid}
time=$logpath"/"$(date +%m%d%H%M%S)
echo "log path: "$time
mkdir ${time}
#get maps and smaps info
adb shell cat /proc/$pid/maps > $time/$pid"_maps"
adb shell cat /proc/$pid/smaps > $time/$pid"_smaps"
#get all process info before dump
adb shell ps -AT > ./$time/processinfo.txt
#get current meminfo before dump
adb shell dumpsys meminfo android.hardware.camera.provider@2.4-service_64 > ./$time/meminfo
#dump heap trace
adb shell kill -s 47 $pid
if [[ $records_malloc_enable == "records_malloc" ]]; then
#dump records
adb shell kill -s 46 $pid
fi
###################需要按照路径修改#####
dump_path="/data/aa"
records_malloc_file_name="m"
###################需要按照路径修改#####
#check dump file
while true
do
file_cnt=`adb shell ls $dump_path | wc -l`
dumpcnt=1
if [[ $records_malloc_enable == "records_malloc" ]]; then
dumpcnt=2
fi
if [[ $file_cnt -eq $dumpcnt ]]; then
echo `adb shell ls $dump_path`
break
fi
sleep 1
done
#find the process name by pid and records pid
#get current meminfo after dump
echo `adb shell dumpsys meminfo android.hardware.camera.provider@2.4-service_64`
adb pull $dump_path ./$time
dirname="${dump_path##*/}"
mv $time/$dirname/* $time
rm -r ./$time/$dirname
#remove the before dump file
adb shell rm $dump_path/*
#need open selinux, others some app will crash
adb shell setenforce 1
cd $time
#--reverse 内存从大到小排序
native_heapdump_viewer.py *$pid*".txt" --symbols ~/Downloads/symbols --reverse > heapdumpfile
malloc.sh
setenforce 0
stop
#setprop libc.debug.malloc.program bruce-leak
setprop libc.debug.malloc.program android.hardware.camera.provider@2.4-service_64
#setprop libc.debug.malloc.options "backtrace_enable_on_signal leak_track backtrace=8 guard"
#setprop libc.debug.malloc.options "backtrace_enable_on_signal leak_track backtrace=8"
setprop libc.debug.malloc.options "leak_track backtrace=8 guard"
start
psstr=`ps -A | grep "android.hardware.camera.provider@2.4-service_64"`
pid=`echo $psstr | awk -F ' ' '{print $2}'`
echo "dump pid = "${pid}
ps -A | grep camera
kill -9 $pid #android.hardware.camera.provider@2.4-service_64
psstr=`ps -A | grep "android.hardware.camera.provider@2.4-service_64"`
pid=`echo $psstr | awk -F ' ' '{print $2}'`
echo "dump new pid = "${pid}
#cat /proc/<pid>/smaps | grep malloc_debug
#chg_exchange_mesg: failed to cmd(=0) run, rc=-1
#showmap <pid> > /sdcard/showmap-camx.txt
#showmap <pid> > /sdcard/showmap-app.txt
#dumpsys meminfo android.hardware.camera.provider@2.4-service_64 > /sdcard/meminfo-camx.txt
#dumpsys meminfo com.oplus.camera > /sdcard/meminfo-app.txt
#kill -45 $pid #android.hardware.camera.provider@2.4-service_64
getprop | grep malloc
logcat -s malloc_debug
#复现问题 logcat | grep -iE " pc | at "
#kill -47 <pid> //停止调试并dump backtrace
#am dumpheap -n <pid> /data/local/tmp/temp.txt //不能创建文件时使用
mallocAPP.sh app进程
setenforce 0
stop
#setprop libc.debug.malloc.program bruce-leak
#setprop libc.debug.malloc.program com.oplus.camera
setprop wrap.com.oplus.camera "LIBC_DEBUG_MALLOC_OPTIONS=backtrace guard leak_track free_track verbose"
setprop wrap.com.oplus.camera "LIBC_DEBUG_MALLOC_OPTIONS=backtrace=1"
setprop wrap.com.oplus.camera "LIBC_DEBUG_MALLOC_OPTIONS=backtrace"
#setprop libc.debug.malloc.options "backtrace_enable_on_signal leak_track backtrace=8 guard"
#setprop libc.debug.malloc.options "backtrace_enable_on_signal leak_track backtrace=8"
#setprop libc.debug.malloc.options "leak_track backtrace=8 guard"
#adb shell "setprop libc.debug.malloc.options backtrace guard leak_track free_track verbose"
setprop libc.debug.malloc.options 'backtrace guard leak_track free_track verbose'
ls /sys/devices/system/cpu/cpufreq/
echo performance > /sys/devices/system/cpu/cpufreq/policy0/scaling_governor
echo performance > /sys/devices/system/cpu/cpufreq/policy4/scaling_governor
echo performance > /sys/devices/system/cpu/cpufreq/policy7/scaling_governor
start
psstr=`ps -A | grep "com.oplus.camera"`
pid=`echo $psstr | awk -F ' ' '{print $2}'`
echo "dump pid = "${pid}
ps -A | grep camera
kill -9 $pid #android.hardware.camera.provider@2.4-service_64
psstr=`ps -A | grep "com.oplus.camera"`
pid=`echo $psstr | awk -F ' ' '{print $2}'`
echo "dump new pid = "${pid}
#cat /proc/<pid>/smaps | grep malloc_debug
#chg_exchange_mesg: failed to cmd(=0) run, rc=-1
#showmap <pid> > /sdcard/showmap-camx.txt
#showmap <pid> > /sdcard/showmap-app.txt
#dumpsys meminfo android.hardware.camera.provider@2.4-service_64 > /sdcard/meminfo-camx.txt
#dumpsys meminfo com.oplus.camera > /sdcard/meminfo-app.txt
#kill -45 $pid #android.hardware.camera.provider@2.4-service_64
getprop | grep malloc
logcat -s malloc_debug
#复现问题 logcat | grep -iE " pc | at "
#kill -47 <pid> //停止调试并dump backtrace
#am dumpheap -n <pid> /data/local/tmp/temp.txt //不能创建文件时使用