Android日志分析基础

admin 2024年5月27日00:31:58评论3 views字数 3316阅读11分3秒阅读模式
鸿蒙(HarmonyOS)APP开发实战课程
Android10系统ROM定制之Frida逆向分析实战
adb fps(每秒帧数,计算流畅度)数据采集adb shell dumpsys gfxinfo <package | pid>

开发者选项=>GPU呈现模式分析确保打开->在adb shell dumpsys gfxinfo中or 在屏幕上显示为线型图

用手机抓取Systrace方法教程

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/gpuclkadb shell cat /sys/class/kgsl/kgsl-3d0/devfreq/cur_freq

GPU最大、最小工作频率

adb shell cat /sys/class/kgsl/kgsl-3d0/devfreq/max_freqadb shell cat /sys/class/kgsl/kgsl-3d0/devfreq/min_freq

GPU可用频率

adb shell cat /sys/class/kgsl/kgsl-3d0/gpu_available_frequenciesadb 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占用率数据

获取游戏/视频应用的fps数据
Android7dumpsys window windows | grep mSurface | grep SurfaceView
Android8dumpsys SurfaceFlinger | grep android包名
查看设备GPU类型
adb shell dumpsys | grep GLES
查看设备GPU其他信息
adb shell dumpsys gfxinfo

查看设备CPU类型
adb shell  cat /proc/cpuinfo
查看CPU占用/使用信息
adb shell dumpsys cpuinfo
显示占用CPU最大的n个应用
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

打印activity堆栈
ubuntu系统
adb shell dumpsys activity activities | sed -En -e '/Running activities/,/Run #0/p'
Window系统
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 -hdebuggerd -j piddebuggerd -b pid

/data/tombstones/data/anr/data/system/dropbox

搜索定位日志
Cmd linemain

"main" prio=    搜索anr相关信息beginning of crash  搜索crash相关信息CPU usage from    搜索cpu使用信息----- pidCmd line: system_server

Native发生异常"main" prio=5 tid=1 Native

ANR发生进程主线程堆栈信息

envent_log日志中搜索am_anr类型的日志

死锁阻塞Subject:Subject: executing serviceSubject: Input dispatching timed out

Cmd line:后边跟的是包名,包名能对上就能定位成功
‍‍
通过aarch64-linux-android-addr2line命令解析符号地址
00000000005f29dc
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
注意这里的so库是对应的带符号的so库才可以
查看分辨率
adb shell vm size
查看屏幕密度
adb shell vm densityadb shell wm density 200

原始值
Physical density: 360Override density: 280
修改为
Physical density: 360Override density: 290
adb shell wm overscan
让界面在靠左200, 靠上300,靠右400 , 靠下500的显示区域显示
adb shell wm overscan 200,300,400,500

通过vm设置的值手机重启后依然生效


adb shell wm density reset

原文始发于微信公众号(哆啦安全):Android日志分析基础

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年5月27日00:31:58
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Android日志分析基础https://cn-sec.com/archives/2780692.html

发表评论

匿名网友 填写信息