adb fps(每秒帧数,计算流畅度)数据采集
adb shell dumpsys gfxinfo <package | pid>
开发者选项=>GPU呈现模式分析确保打开->在adb shell dumpsys gfxinfo中or 在屏幕上显示为线型图
adb采集各核CPU频率
读/sys/devices/system/cpu/cpuX/cpufreq/scaling_cur_freq文件的值,X不定,看是几核手机,scaling_cur_freq是否存在也不一定,需要判断
至于为啥不取cpuinfo_cur_freq文件的值,原因是android 6,7系统获取的时候,这个文件shell没有读取权限,需要root权限
GPU使用率获取:会得到两个值,(前一个/后一个)*100%=使用率
adb shell cat /sys/class/kgsl/kgsl-3d0/gpubusy
GPU工作频率
adb shell cat /sys/class/kgsl/kgsl-3d0/gpuclk
adb shell cat /sys/class/kgsl/kgsl-3d0/devfreq/cur_freq
GPU最大、最小工作频率
adb shell cat /sys/class/kgsl/kgsl-3d0/devfreq/max_freq
adb shell cat /sys/class/kgsl/kgsl-3d0/devfreq/min_freq
GPU可用频率
adb shell cat /sys/class/kgsl/kgsl-3d0/gpu_available_frequencies
adb shell cat /sys/class/kgsl/kgsl-3d0/devfreq/available_frequencies
GPU可用工作模式
adb shell cat /sys/class/kgsl/kgsl-3d0/devfreq/available_governors
GPU当前工作模式
adb shell cat /sys/class/kgsl/kgsl-3d0/devfreq/governor
adb CPU占用率数据采集
有两种方法可以获取
(1).adb shell "top -n 5 | grep <package | pid>" ,第三列就是实时监控的CPU占用率(-n 指定执行次数,不需root权限),这边top命令执行需要2到3s左右,一般可以采用busybox 的top命令执行,效率会快很多
(2).adb shell "dumpsys cpuinfo | grep <package | pid>"
两种方法直接区别在于,top是持续监控状态,而dumpsys cpuinfo获取的实时CPU占用率数据
Android7
dumpsys window windows | grep mSurface | grep SurfaceView
Android8
dumpsys SurfaceFlinger | grep android包名
adb
shell dumpsys | grep GLES
adb
shell dumpsys gfxinfo
adb
shell cat /proc/cpuinfo
adb
shell dumpsys cpuinfo
adb shell top –m n
adb
shell dumpsys meminfo
CPU核数
/sys/devices/
system
/cpu/possible
最大频率
/sys/devices/
system
/cpu/cpu’ + p +
'/cpufreq/cpuinfo_max_freq
当前频率
/sys/devices/system/cpu/cpu’ + p + '
/cpufreq/scaling_cur_freq
整体CPU使用率
/proc/
stat
应用CPU使用率
/proc/${pid}/
stat
adb
shell dumpsys activity activities | sed -En -e
'/Running activities/,/Run #0/p'
dumpsys activity activities | sed -En -e '/Running activities/,/Run #0/p'
adb shell "dumpsys activity activities | sed -En -e '/Running activities/,/Run #0/p'"
adb shell dumpsys activity | findstr Run
adb shell ps -Z | findstr "com.android.camera2"
adb logcat -b all > logcat_all.txt (抓全部日志)
adb logcat -s *:E > logcat_err.log (抓错误日志)
adb logcat -s *:I (抓INFO或以上级别的日志)
logcat -b crash
adb shell dumpsys media.audio_flinger
获取启动时间
adb shell am start -S -W packagename/activity
抓取crash日志
adb logcat *:F
debuggerd -h
debuggerd -j pid
debuggerd -b pid
/data/tombstones
/data/anr
/data/system/dropbox
Cmd line
main
"main" prio= 搜索anr相关信息
beginning of crash 搜索crash相关信息
CPU usage from 搜索cpu使用信息
----- pid
Cmd line: system_server
Native发生异常
"main" prio=5 tid=1 Native
ANR发生进程主线程堆栈信息
envent_log日志中搜索am_anr类型的日志
死锁阻塞
Subject:
Subject: executing service
Subject: Input dispatching timed out
Cmd line:后边跟的是包名,包名能对上就能定位成功
H:Androidandroid-sdk-windowsndk21.1.6352462toolchainsaarch64-linux-android-4.9prebuiltwindows-x86_64bin
H:Androidandroid-sdk-windowsndk21.1.6352462toolchainsarm-linux-androideabi-4.9prebuiltwindows-x86_64bin
aarch64-linux-android-addr2line -C -f -e <对应带符号表的so库> <8位内存地址>
./aarch64-linux-android-addr2line -C -f -e /android_arm64/libNvStreamingSdkCoreSymbol.so 0005f29dc
adb shell vm size
adb shell vm density
adb shell wm density 200
Physical density: 360
Override density: 280
Physical density: 360
Override density: 290
adb shell wm overscan
adb shell wm overscan 200,300,400,500
通过vm设置的值手机重启后依然生效
adb shell wm density reset
原文始发于微信公众号(哆啦安全):Android日志分析基础
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论