系统anr日志如果没有root手机,就没办法拿到,所以需要修改系统,将ANR日志拷贝到sdcard目录里面。
1.在init.qcom.corelog.sh文件中添加创建目录和拷贝文件的动作:
--- a/src/LINUX/android/device/qcom/msm8952_64/init.qcom.corelog.sh
+++ b/src/LINUX/android/device/qcom/msm8952_64/init.qcom.corelog.sh
@@ -33,10 +33,14 @@ LOGKMSG="$LOGPATH/kmsg.txt"
LOGSYSPROP="$LOGPATH/sysprop.txt"
LOGMISCINFO="$LOGPATH/miscinfo.txt"
-LOGBAT="/sdcard/ctflog/battery"
+LOGBAT="$LOGTOPPATH/battery"
LOGBATTERY="$LOGBAT/battery.csv"
LOGFGREGS="$LOGBAT/fgregs.txt"
+LOGTRACE="$LOGTOPPATH/trace"
+#========================================
function DEBUG()
{
[ "$_DEBUG" == "ON" ] && $@ || :
@@ -196,6 +200,11 @@ function main()
rename_log
fi
+ DBG_MSG "copy anr log +++"
+ #cp -rf /data/system/dropbox/ "$LOGTRACE/"
+ mkdir -p $LOGTRACE
+ cp -rf "/data/anr/" $LOGTRACE
+
# Check crash event
ramoops="/sys/fs/pstore/dmesg-ramoops-0"
2.修改SeLinux权限:
--- a/src/LINUX/android/device/qcom/sepolicy/common/init_shell.te
+++ b/src/LINUX/android/device/qcom/sepolicy/common/init_shell.te
@@ -228,11 +228,26 @@ allow qti_init_shell pstorefs:file unlink;
allow qti_init_shell default_prop:property_service { set };
allow qti_init_shell shell_prop:property_service { set };
-#Add for user version
+# Add for user version
allow qti_init_shell fuse:dir rename;
allow qti_init_shell fuse:dir rmdir;
allow qti_init_shell fuse:dir reparent;
+# Add for dump anr log
+allow qti_init_shell system_data_file:file open;
+allow qti_init_shell system_data_file:file read;
+allow qti_init_shell system_data_file:file getattr;
+# Add for dump anr log on user build
+allow qti_init_shell anr_data_file:dir getattr;
+allow qti_init_shell anr_data_file:dir read;
+allow qti_init_shell anr_data_file:dir open;
+allow qti_init_shell anr_data_file:dir search;
+
+allow qti_init_shell anr_data_file:file getattr;
+allow qti_init_shell anr_data_file:file open;
+allow qti_init_shell anr_data_file:file read;
+
#change mcwill dev
allow qti_init_shell self:udp_socket { create ioctl };
allow qti_init_shell net_data_file:dir { search };