aee 有对上层三方app 进行过滤, 如需抓三方app 的exception, 可以设置属性:
setprop persist.mtk.aee.filter 0
// frameworks/base/core/java/com/mediatek/aee/ExceptionLog.java
public void handle(String type, String info, String pid) {
Log.w(TAG, "Exception Log handling...");
if (type.startsWith("data_app") && !info.contains("com.android.development")
&& (SystemProperties.getInt("persist.mtk.aee.filter", 1) == 1)) {
Log.w(TAG, "Skipped - do not care third party apk");
return;
}
// 如想抓取第三方APK触发的异常,需要设置persist.mtk.aee.filter的属性值为0
建议正式出货版本去除此修改,会影响系统performance
这个属性是是否开启强制aee mode的开关,仅在debug时可以关掉,正式版本必须要开启,否则会影响CTS.
user版本上不可以任意切换AEE mode,如果要切换,需要关掉aee enforcing; 或是开mobilelog后,mode也会由4切到3. 所以一般开启 ro.aee.enforcing
关于aee mode,我们一般只会用到mode 3跟mode 4;
mode 3对应exception level 1, eng load默认会是在这个mode // exception level 1 对应FATAL +EXCETPTION + REMINDING(manual dump)
mode 4对应exception level 0 、user/userdebug load默认会是在这个mode; //exception level 0只抓fatal db.
user版本上不可以任意切换AEE mode,如果要切换,需要关掉aee enforcing; 或是开mobilelog后,mode也会由4切到3.
android/vendor/mediatek/proprietary/external/aee/direct-coredump/direct-coredump.c
// eng&userdebug load direct-coredump default enable
26 // user load direct-coredump default disable
27 if (is_user_built()) {
28 property_get("persist.aee.core.direct", value, "disable");
29 } else {
30 property_get("persist.aee.core.direct", value, "enable");
31 }
android/vendor/mediatek/proprietary/external/aee/config_external/init.aee.customer.rc
38 on property:persist.aee.core.dump=enable
39 write /proc/sys/fs/suid_dumpable 1
40 write /proc/sys/kernel/core_pattern "|/vendor/bin/aee_core_forwarder /data/vendor/core/ %p %s UID=%u GID=%g"
user 版本:三方app 默认不做ANR dump, 如需抓三方app 的ANR exception, 可以设置属性
setprop persist.anr.dumpthr 1
// vendor/mediatek/proprietary/frameworks/base/services/core/java/com/mediatek/server/anr/AnrManagerService.java
/**
1608 * Reduce the 3rd party's anr dump info in user load for performance
1609 */
1610 private boolean needReduceAnrDump(ApplicationInfo appInfo) {
1611 return IS_USER_LOAD && !isBuiltinApp(appInfo) && !(SystemProperties.getInt(
1612 "persist.anr.dumpthr",NORMAL_ANR_FLOW) == ENABLE_ANR_DUMP_FOR_3RD_APP);
1613 }
建议正式出货版本去除此修改,会影响系统performance
1 如果需要user load 中,在打开mtklogger后(必须打开mtklogger抓android ap log),抓到普通exception db ,并且NE 中有coredump 文件 ,修改如下:
/vendor/mediatek/proprietary/external/aee/config_external/init.aee.customer.rc 文件中添加
on init
setprop ro.aee.enforcing no #change for 1.1
setprop persist.aee.core.dump enable #change for 1.2
setprop persist.aee.core.direct enable
(注意此修改后, 无法通过CTS 安全测试项, 在正式发布版本时, 需要恢复默认设置,把上面修改去掉)
2 android O 需要修改的部分
2.1 aee 有对上层三方app 进行过滤, 如需抓三方app 的exception, 可以设置属性
setprop persist.mtk.aee.filter 0
2.2 user load :三方app 默认不做ANR dump, 如需抓三方app 的ANR exception, 可以设置属性
setprop persist.anr.dumpthr 1
如发现aee debug 抓db 有问题 ,请先确认系统环境, getprop | grep aee 或者 打开ap log 中的properties 文件确认以下属性:
[persist.mtk.aee.mode]: [3] //需打开mtklogger 抓mobilelog 才会 切换成 mode 3
[persist.mtk.aee.filter]: [0]
[persist.aee.core.dump]: [enable]
[persist.aee.core.direct]: [enable]
[ro.aee.enforcing]: [no]
设置属性: setprop persist.anr.dumpthr 1
ANR : data/anr/目录
AEE:不同异常类型DB存放路径不同
Before android o :
/data/aee_exp;
/sdcard/mtklog/aee_exp;
After:
JE/ANR/SWT db存放在data/aee_exp
KE/HWT/HW_REBOOT/EE/NE db存放在data/vendor/mtklog/aee_exp
android/vendor/mediatek/proprietary/external/aee/config_external/init.aee.customer.rc
1 on post-fs-data
2 mkdir /data/aee_exp 0755 root root
3 mkdir /data/vendor/mtklog 0755 root root
4 mkdir /data/vendor/mtklog/aee_exp 0755 root root
NOTE:
不能手动删除/data/aee_exp, /data/vendor/mtklog/aee_exp 目录:
aee db 存放路径 /data/aee_exp, /data/vendor/mtklog/aee_exp 的selinux标签如下, 这个标签是在init 创建目录的时候打下去的:
/data/aee_exp(/.*)? u:object_r:aee_exp_data_file:s0
/data/vendor/mtklog/aee_exp(/.*)? u:object_r:aee_exp_data_file:s0
如果删除aee db 的存放目录, 再创建的时候会沿用父目录的selinux 标签( system_data_file),导致aee 没有selinux 权限不能正确产生db(重新开机后,init不会强制更新标签,还是会使用 system_data_file 的签名);
solution:有root权限的手机有可能误删,会影响抓DB。解决办法,执行restorecon -R xxx/aee_exp命令即可
// android\vendor\**\common\configs\**_common.mk
ifeq ($(strip $(**_DEBUG_SUPPORT)),true)
#enable coredump
PRODUCT_PROPERTY_OVERRIDES += persist.aee.core.dump=enable
PRODUCT_PROPERTY_OVERRIDES += persist.aee.core.direct=enable
PRODUCT_PROPERTY_OVERRIDES += persist.anr.dumpthr=1
PRODUCT_PROPERTY_OVERRIDES += persist.mtk.aee.filter=0
PRODUCT_PROPERTY_OVERRIDES += ro.aee.enforcingr=no
endif
注意:ro.aee.enforcing关掉会影响CTS