【MTK】user版本下输出aee db 和 anr trace

Aee 属性
persist.mtk.aee.filter
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
ro.aee.enforcing
这个属性是是否开启强制aee mode的开关,仅在debug时可以关掉,正式版本必须要开启,否则会影响CTS.
user版本上不可以任意切换AEE mode,如果要切换,需要关掉aee enforcing; 或是开mobilelog后,mode也会由4切到3. 所以一般开启 ro.aee.enforcing
persist.mtk.aee.mode

关于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.
persist.aee.core.direct

android/vendor/mediatek/proprietary/external/aee/direct-coredump/direct-coredump.c
     // eng&userdebug load direct-coredump default enable
     // user load direct-coredump default disable
     if (is_user_built()) {
         property_get("persist.aee.core.direct", value, "disable");
     } else {
         property_get("persist.aee.core.direct", value, "enable");
     }

persist.aee.core.dump

android/vendor/mediatek/proprietary/external/aee/config_external/init.aee.customer.rc  

 on property:persist.aee.core.dump=enable
     write /proc/sys/fs/suid_dumpable 1
     write /proc/sys/kernel/core_pattern "|/vendor/bin/aee_core_forwarder /data/vendor/core/ %p %s UID=%u GID=%g"

ANR属性
persist.anr.dumpthr

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
         /**
      * Reduce the 3rd party's anr dump info in user load for performance
      */
     private boolean needReduceAnrDump(ApplicationInfo appInfo) {
         return IS_USER_LOAD && !isBuiltinApp(appInfo) && !(SystemProperties.getInt(
                 "persist.anr.dumpthr",NORMAL_ANR_FLOW) == ENABLE_ANR_DUMP_FOR_3RD_APP);
     }

建议正式出货版本去除此修改,会影响系统performance
user 版本开启AEE

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]

user 版本开启ANR
设置属性: 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

 on post-fs-data
     mkdir /data/aee_exp 0755 root root
     mkdir /data/vendor/mtklog 0755 root root
     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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值