(1)需要开启的prop
默认情况下部分异常的db文件并不会产生,有如下Log显示:
01-10 11:57:31.292 384 384 D AEE_AED : $===AEE===AEE===AEE===$
01-10 11:57:31.293 384 384 D AEE_AED : p 2 poll events 1 revents 1
01-10 11:57:31.293 384 384 D AEE_AED : PPM cpu cores:4, online:4
01-10 11:57:31.294 384 384 D AEE_AED : aed_main_fork_worker: generator 0xb40000776622b3a0, worker 0x7fe03477f0, recv_fd 11
01-10 11:57:31.295 8597 8597 I AEE_AED : handle_request(11)
01-10 11:57:31.296 8597 8597 I AEE_AED : pid: 8455, tid: 8595, >>> /vendor/bin/hw/camerahalserver <<<
01-10 11:57:31.296 8597 8597 I AEE_AED : read_request: receive requirement from aee_core_forwar
01-10 11:57:31.296 8597 8597 D AEE_AED : u:r:mtk_hal_camera:s0
01-10 11:57:31.296 8597 8597 V AEE_AED : dashboard_record_update() : rec->module = /vendor/bin/hw/camerahalserver
01-10 11:57:31.296 8597 8597 D AEE_AED : Last exception time: 1641787006
01-10 11:57:31.296 8597 8597 D AEE_AED : cur time: 1641787051
01-10 11:57:31.296 8597 8597 D AEE_AED : Skip for Exp level'0'
01-10 11:57:31.296 8597 8597 I AEE_AED : aed_ne_core_session: aed_report_filter asked to skip
01-10 11:57:31.296 8597 8597 E AEE_AED : handle_request: return status is fail
01-10 11:57:31.298 384 384 D AEE_AED : clear ppm settings
01-10 11:57:31.298 8596 8596 E libc : Access denied finding property "persist.vendor.aee.log.status"
01-10 11:57:31.298 8596 8596 I aee_core_forwarder: process_coredump: skip process NE
01-10 11:57:31.298 8596 8596 E libc : Access denied finding property "persist.vendor.aee.log.status"
01-10 11:57:31.299 384 384 D AEE_AED : $===AEE===AEE===AEE===$
可以参考Mtk官网的FAQ设置相关属性:
- [FAQ20159] Android user/userdebug load,如何抓到所有异常的aee db?
- [FAQ25047] Android Q/R user/userdebug版本如何开启aee dump机制
(A)需要设置如下属性
/vendor/mediatek/proprietary/external/aee/config_external/init.aee.customer.vendor.rc里添加
on init
setprop ro.vendor.aee.enforcing no(注意修改此属性后, 无法通过CTS 安全测试项, 在正式发布版本时, 需要恢复默认设置,把此行修改去掉)
setprop persist.vendor.aeev.core.dump enable
setprop persist.vendor.aeev.core.direct enable
setprop persist.vendor.mtk.aee.mode 3
setprop persist.vendor.mtk.aeev.mode 3
(B)db文件产生在如下路径
/data/aee_exp
/data/vendor/aee_exp
(C)注意事项
(1)aee 有对上层三方app 进行过滤, 如需抓三方app 的exception, 可以设置属性:setprop persist.vendor.mtk.aee.filter 0
(2)user load :三方app 默认不做ANR dump, 如需抓三方app 的ANR exception, 可以设置属性:setprop persist.vendor.anr.dumpthr 1
(2)产生db文件时的Log
01-12 12:02:08.314467 430 430 D AEE_AED : $===AEE===AEE===AEE===$
01-12 12:02:08.314704 430 430 D AEE_AED : p 2 poll events 1 revents 1
01-12 12:02:08.315621 430 430 D AEE_AED : PPM cpu cores:8, online:8
01-12 12:02:08.316536 430 430 D AEE_AED : aed_main_fork_worker: generator 0xb4000078bf4309d0, worker 0x7fe843dbd0, recv_fd 11
01-12 12:02:08.318202 8912 8912 I AEE_AED : handle_request(11)
01-12 12:02:08.319391 846 923 D AAL : 01-12 12:02:08.303 BL= 782,ESS= 256,
01-12 12:02:08.319546 8912 8912 I AEE_AED : pid: 824, tid: 8909, >>> /vendor/bin/hw/camerahalserver <<<
01-12 12:02:08.319598 8912 8912 I AEE_AED : read_request: receive requirement from aee_core_forwar
01-12 12:02:08.319787 8912 8912 D AEE_AED : u:r:mtk_hal_camera:s0
01-12 12:02:08.319821 8912 8912 V AEE_AED : dashboard_record_update() : rec->module = /vendor/bin/hw/camerahalserver
01-12 12:02:08.319851 8912 8912 V AEE_AED : Update record[0]
01-12 12:02:08.319877 8912 8912 D AEE_AED : i, Cls, count, last_time, module
01-12 12:02:08.319900 8912 8912 D AEE_AED : ====================================================================
01-12 12:02:08.319926 8912 8912 D AEE_AED : 0, 3, 1, 1641960128, /vendor/bin/hw/camerahalserver
01-12 12:02:08.319950 8912 8912 D AEE_AED : 1, -1, 0, 0,
01-12 12:02:08.319974 8912 8912 D AEE_AED : 2, -1, 0, 0,
01-12 12:02:08.319998 8912 8912 D AEE_AED : 3, -1, 0, 0,
01-12 12:02:08.320022 8912 8912 D AEE_AED : 4, -1, 0, 0,
01-12 12:02:08.320046 8912 8912 D AEE_AED : 5, -1, 0, 0,
01-12 12:02:08.320070 8912 8912 D AEE_AED : 6, -1, 0, 0,
01-12 12:02:08.320094 8912 8912 D AEE_AED : 7, -1, 0, 0,
01-12 12:02:08.320144 8912 8912 W AEE_AED : DAL feature is off, just return
01-12 12:02:08.320187 8912 8912 I AEE_AED : Dumping EXP/Native (NE)
01-12 12:02:08.320256 8912 8912 I AEE_AED : db base:/data/aee_exp
01-12 12:02:08.321652 8552 8614 I DebugLoggerUI/FileMonitor: onEvent(). event = 1073742080, path = temp
01-12 12:02:08.321726 8912 8912 D AEE_AED : aed_report_dump_open: Using /data/aee_exp/temp/db.4jDnsl
01-12 12:02:08.321951 8912 8912 I AEE_AED : predump starts
01-12 12:02:08.322092 8912 8912 E AEE_AED : Fail to open process map: /proc/824/maps
01-12 12:02:08.322125 8912 8912 E AEE_AED : generate_pagemap_data: Copy from pid:824 failed(13), Permission denied
01-12 12:02:08.322225 8912 8912 E AEE_AED : Fail to open process map: /proc/824/maps
01-12 12:02:08.322255 8912 8912 E AEE_AED : generate_pagemap_data: Copy from pid:824 failed(13), Permission denied
01-12 12:02:08.322278 8912 8912 I AEE_AED : predump ends
db文件可使用Mtk提供的Gat工具来进行解析。
(3)关闭普通非FATAL exception db的dump信息
//vendor/mediatek/proprietary/external/aee/config_external/init.aee.customer.vendor.rc里添加
on init
setprop persist.vendor.aeev.core.dump disable //<== disable NE coredump
setprop persist.vendor.aeev.core.direct disable //<== disable NE direct coredump
setprop persist.vendor.mtk.aee.mode 4 //<== Dump FATAL exception db only
setprop persist.vendor.mtk.aeev.mode 4 //<== Dump FATAL exception db only
setprop persist.vendor.mtk.aee.filter 1 //<== Disable 3rd apk exception db
setprop persist.vendor.anr.dumpthr 0 //<== Disable 3rd apk ANR db
setprop persist.vendor.dbg.anrflow 2 //<== Disable all apk (including system apk) ANR db
setprop persist.vendor.anr.enhancement 1 //<== Use MTK ANR Flow
注意:
打开MTK debuglogger之后persist.vendor.mtk.aee.mode和persist.vendor.mtk.aeev.mode会默认修改为3,会开启抓取普通JE db。
建议可以在脚本文件里面直接设置,在打开MTK debuglogger之后,再设置这两个属性值为4,这样就可以关闭普通JE db dump。
(4)简单操作和验证如下
Q及以上修改vendor/mediatek/proprietary/external/aee/config_external/init.aee.customer.vendor.rc,init.aee.customer.system.rc也可一起修改。
setprop ro.vendor.aee.enforcing no
setprop persist.vendor.aeev.core.dump enable
setprop persist.vendor.aeev.core.direct enable
setprop persist.vendor.mtk.aee.mode 3
setprop persist.vendor.mtk.aeev.mode 3
setprop persist.vendor.mtk.aee.filter 0
setprop persist.vendor.anr.dumpthr 1
setprop persist.mtk.aee.mode 3
- 修改后cat out/target/product/kxxxx/vendor/etc/init/hw/init.aee.rc,确认修改在out下生成文件生效
- 手机上查看上文设定的属性值,确保每一个都生效
- 用*#*#33284打开mtklog,通过adb shell ps | grep system_server查询SystemServer进程,后通过adb shell kill -11 xxx来杀死进程触发NE,后通过pull aee_exp文件夹下文件使用MediatekDBViewer进行解析