1. 内存优化测试

[toc]

1.1. 测试TP报点率:(正常范围:80-120Hz)

  • adb shell getevent -help // 查看获取事件的帮助,所有命令

  • adb shell getevent

➜  ~ adb shell getevent
//直接显示
add device 1: /dev/input/event0    //物理按键
  name:     "sci-keypad"
add device 2: /dev/input/event4    //耳机线控
  name:     "headset-keyboard"
add device 3: /dev/input/event2    //加速传感器/重力传感器
  name:     "accelerometer"
add device 4: /dev/input/event1    //屏幕
  name:     "focaltech_ts"
add device 5: /dev/input/event3
  name:     "alps_pxy"
//触摸屏幕后开始打印
/dev/input/event1: 0003 0035 000001e6
/dev/input/event1: 0003 0036 00000370
/dev/input/event1: 0001 014a 00000001
/dev/input/event1: 0000 0002 00000000
/dev/input/event1: 0000 0000 00000000
/dev/input/event1: 0003 0035 000001de
/dev/input/event1: 0003 0036 0000036b
/dev/input/event1: 0000 0002 00000000
/dev/input/event1: 0000 0000 00000000
/dev/input/event1: 0003 0035 000001d5
/dev/input/event1: 0003 0036 00000365
/dev/input/event1: 0000 0002 00000000
/dev/input/event1: 0000 0000 00000000
/dev/input/event1: 0003 0035 000001cb
/dev/input/event1: 0003 0036 00000360
  • adb shell getevent -r
➜  ~ adb shell getevent -r
//直接打印
add device 1: /dev/input/event0
  name:     "sci-keypad"
add device 2: /dev/input/event4
  name:     "headset-keyboard"
add device 3: /dev/input/event2
  name:     "accelerometer"
add device 4: /dev/input/event1
  name:     "focaltech_ts"
add device 5: /dev/input/event3
  name:     "alps_pxy"
//触摸屏幕后开始打印
/dev/input/event1: 0003 0035 00000159
/dev/input/event1: 0003 0036 000002fa
/dev/input/event1: 0001 014a 00000001
/dev/input/event1: 0000 0002 00000000
/dev/input/event1: 0000 0000 00000000
/dev/input/event1: 0003 0035 00000155
/dev/input/event1: 0003 0036 000002f9
/dev/input/event1: 0000 0002 00000000
/dev/input/event1: 0000 0000 00000000 rate 70
/dev/input/event1: 0003 0035 00000150
/dev/input/event1: 0003 0036 000002f9
/dev/input/event1: 0000 0002 00000000
/dev/input/event1: 0000 0000 00000000 rate 99
/dev/input/event1: 0003 0035 00000149
/dev/input/event1: 0003 0036 000002f9
/dev/input/event1: 0000 0002 00000000
/dev/input/event1: 0000 0000 00000000 rate 100
  • adb shell getevent -ltr
➜  ~ adb shell getevent -ltr
//直接打印
add device 1: /dev/input/event0
  name:     "sci-keypad"
add device 2: /dev/input/event4
  name:     "headset-keyboard"
add device 3: /dev/input/event2
  name:     "accelerometer"
add device 4: /dev/input/event1
  name:     "focaltech_ts"
add device 5: /dev/input/event3
  name:     "alps_pxy"
//触摸屏幕后打印
[   57824.065040] /dev/input/event1: EV_ABS       ABS_MT_POSITION_X    00000135
[   57824.065040] /dev/input/event1: EV_ABS       ABS_MT_POSITION_Y    00000336
[   57824.065040] /dev/input/event1: EV_KEY       BTN_TOUCH            DOWN
[   57824.065040] /dev/input/event1: EV_SYN       SYN_MT_REPORT        00000000
[   57824.065040] /dev/input/event1: EV_SYN       SYN_REPORT           00000000
[   57824.079200] /dev/input/event1: EV_ABS       ABS_MT_POSITION_X    0000011c
[   57824.079200] /dev/input/event1: EV_ABS       ABS_MT_POSITION_Y    0000032f
[   57824.079200] /dev/input/event1: EV_SYN       SYN_MT_REPORT        00000000
[   57824.079200] /dev/input/event1: EV_SYN       SYN_REPORT           00000000             rate 70
[   57824.089210] /dev/input/event1: EV_ABS       ABS_MT_POSITION_X    00000109
[   57824.089210] /dev/input/event1: EV_ABS       ABS_MT_POSITION_Y    0000032a
[   57824.089210] /dev/input/event1: EV_SYN       SYN_MT_REPORT        00000000
[   57824.089210] /dev/input/event1: EV_SYN       SYN_REPORT           00000000             rate 99
[   57824.099281] /dev/input/event1: EV_ABS       ABS_MT_POSITION_X    000000f2
[   57824.099281] /dev/input/event1: EV_ABS       ABS_MT_POSITION_Y    00000325
[   57824.099281] /dev/input/event1: EV_SYN       SYN_MT_REPORT        00000000
[   57824.099281] /dev/input/event1: EV_SYN       SYN_REPORT           00000000             rate 99
  • getevent -c 10 //输出10条信息后退出
  • getevent -l //将type、code、value以对应的常量名称显示

1.2. 手机上抓取log:

  • 在拨号界面输入:##3646633## ,然后找到DEBUG&LOG抓取对应log数据

1.3. adb 命令抓取log:

  • adb monkey -s 1 -p com.freeme.launcher --ingorncrashs --ingorntimeout 999999999 跑monkey,com.freeme.launcher为包名,999999999为次数
  • adb shell top -d 3 > top.log log
  • adb shell top > top.log
  • adb bugreport > bug.log
  • adb shell pm list packages 获取手机中所有应用包名
  • adb monkey 获取跑monkey的所有命令

1.4. 手机常见问题及测试方法:

  • 能开机,卡死在一些界面上。 ----这种情况,有几个步骤:先按power键看是否可以正常休眠唤醒。如果power键有反应,再插USB,看是否可以正常检测到ADB,如果可以正常检测到ADB,那可以通过ADB shell getevent 来看是否是TP驱动没有报点。
  • 开机卡死,按power键没反应。 ----需要抓取mtklog,看是否有生成aee的log文件夹,有的话需要通过gat工具来解析。

步骤如下:

1:电脑端打开应用程序 gat-linux-x86_64-3.1501.1.c\gat-linux-x86_64-3\modules\MediatekLogView\MediatekLogView;

2:打开aee目录里面的文件,如” db.fatal.06.KE.dbg“,可以直接拖进来。

  • 不能开机,需要抓取串口log分析。 简单分析步骤: 1:抓取串口log[MTK 的波特率需要设置为921600]

2:确认PC指针指到具体函数和具体函数 在alps/prebuilts/gcc/linux-x86/aarch64-linux-anroid-4.9/bin$./aarch64-linux-android-addr2line -e vmlinux -f -C 0xffffffc0009f62a4 确定具体文件和行号 alps/prebuilts/gcc/linux-x86/aarch64-linux-anroid-4.9/bin$./aarch64-linux-android-objdump -d vmlinux

3:有时候kernel看到了异常,但不一定就是kernel的问题,有可能是上层主动发了重启之类的命令,可以在log中看类似的打印:

  • WatchDog超时

  • HW reboot Hardware reboot的成因:MT6592平台芯片有一个External watch dog,软件每隔30秒要去踢一次,若没有踢到,就会触发软件Watch Dog Timeout重启;

若软件有在规定的时间内(30秒)去踢这个External Watch Dog,但是由于硬件原因,导致External Watch Dog没有及时被踢到,那么这个External Watch Dog最多会等待60秒的时间,60秒之后会直接触发硬件重启,这就是所谓的Hardware reboot

至于是什么样的硬件原因导致无法及时提到External Watch Dog,最常见的一种是bus hang住, 比如不合理的读写寄存器就会导致bus hang住;也有一些是硬件设计不合理,或者硬件出现故障导致机器乱死,或者硬件某些器件不稳定,导致Hardware reboot 如果是因为读写寄存器导致bus hang住,进而触发Hardware reboot,一般在last pc 和last kmsg中会有体现,每次最后的PC或者最后打印出来的几句log都是一样或者相似的 若是硬件不合理或者硬件出现故障或者硬件不稳,这种在last pc 和last kmsg中就没有规律性了, 这种case,一般都是对照之前的项目,看之前项目是否有出现? 若之前项目稳定,而现在项目有Hardware reboot,则对照之前项目跟现在项目在硬件上的差异,然后通过硬件实验来理清问题

1.5. 通过查找关键字查看log:

通过查找:"null" "error" " "E/","Fatal","NullPointerException","Build fingerprint:","exception","anr","DexOpt"等的错误信息,来定位问题

  • 空指针问题: NullPointerException: 这个直接找到java代码,首先分析为什么会是空指针,如果逻辑上没有问题,加上一个判断就可以,也就是说如果为空的时候再次赋值或者直接返回

  • 没有捕获异常问题: Exception:能捕获的话捕获

  • ANR问题: 例如:E/ActivityManager( 957): ANR in com.ipanel.join.appstore

  • Fatal问题 Fatal: 比较严重了,很多都很动态库和空指针有关,一般会接下来打印"Build fingerprint:"或”NullPointerException“

  • 动态库问题

  • 执行DexOpt错误 DexOpt:解压或优化extract+optimize DEX出的问题

  • 死机问题: 例如:WARN/SharedBufferStack(312): waitForCondition(LockCondition) timed out (identity=19, status=0). CPU may be pegged. trying again.
      12-

1.6. 通过命令查看内存

adb shell dumpsys meminfo 包名

1.7. 查看进程

adb shell ps|grep 包名
Copyright © tracyliu-FE 2021 all right reserved,powered by Gitbook文件修订时间: 2022-03-06 12:52:33

results matching ""

    No results matching ""