MTK平台的SWT异常的简单总结(2)——SWT原理和分析

news2024/12/20 15:31:18

(1)原理性

在这里插入图片描述

(2)SWT如何抓取Log

遇到SWT问题详细可参考MTK提供的FAQ:SWT机制介绍。

获取Ap Log的路径:/sdcard/debuglogger/mobilelog/APLog_XXXXX
获取db的路径:/data/aee_exp

如果db没有打包完成,而trace文件已经生成,请adb pull data/anr/ 目录下的trace文件。

DB文件备注

Android user/userdebug版本因受Security限制,导致在M版本之后打开mtklogger也只能抓到fatal db,不能抓普通的ANR db,O版本开始默认不会抓取第三方APP的ANR db。

如需抓取(包括第三方app)ANR db,请参考如下FAQ进行修改:Android user/userdebug load,如何抓到所有异常的aee db?。

//Android P 后需修改
//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

(3)解析DB文件

解析DB需要特定的工具:GAT 或者 QAAT

在这里插入图片描述
DB常用文件说明:

在这里插入图片描述

(4)确认trace有效性

在这里插入图片描述
先通过event_log确认SWT/ANR发生的时间点:

Keyword:
SWT —— “watchdog”
ANR —— “am_anr”

有效trace时间:
SWT —— (swt_time – swt_timeout – 10s)~ (swt_time + 10s),之间的两次trace
ANR —— (anr_time – anr_timeout – 10s)~ (anr_time + 10s)

(5)SWT Analysis Flow

在这里插入图片描述
当SWT的两次有效trace打印的call stack完全一样时,才认为是block issue,重点从call stack来入手分析,常规分析流程如上图。

如果两次trace打印的call stack不完全一样或者只有一次有效trace,很有可能是系统Performance比较差,需要check系统performance状况,请参考下面流程图先判断是CPU or Low Memory or IO Loading bound。

在这里插入图片描述

(6)ANR Analysis Flow

在这里插入图片描述
APP is Idle:检查CallStack,查看main thread的CallStack停在nativePollOnce (From SWT_JBT_TRACES)。

在这里插入图片描述

短时间内发生多次ANR,请先解掉第一个ANR,再确认后续ANR是否还能复现。

(7)Call Stack Analysis

(A)查找Backtrace

(a_1)SWT追踪

在这里插入图片描述
(a_2)ANR追踪

在这里插入图片描述
(B)线程状态

(b_1)Idle:main thread的message queue空闲

在这里插入图片描述
(b_2)Blocked:当前thread被其他thread block住
在这里插入图片描述

(b_3)Waiting / TimedWaiting:当前thread在等待其他thread notify

在这里插入图片描述

(b_4)Sleeping: 当前Thread主动调用sleep(ms)
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/612290.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

RK3288 Android5.1添加WiFiBT模块AP6212

CPU:RK3288 系统:Android 5.1 注:RK3288系统,目前 Android 5.0 Kernel 3.10 SDK 支持 Braodcom,Realtek 等 WiFi BT 模块 各个 WiFi BT 模块已经做到动态兼容,Android 上层不再需要像以前一样进 行特定宏的配置 此…

华为OD机试真题 Java 实现【关联子串】【2023Q1 100分】,附详细解题思路

一、题目描述 给定两个字符串str1和str2, str1进行排列组合只要有一个为str2的子串则认为str1是str2的关联子串, 请返回子串在str2的起始位置,若不是关联子串则返回-1。 二、输入描述 qwe dsgfasgfwe 三、输出描述 -1 四、解题思路 …

遇到大数据处理,你会怎么办?快来看一下位图和布隆过滤器(下)

目录 前文 一,为什么有布隆过滤器 二,什么是布隆过滤器 三,布隆过滤器的实现 四,布隆过滤器的优缺点 4.1 布隆过滤器的优点 4.2 布隆过滤器的缺点及其改进方式 4.2.1 查找误判及其改进方式分析 4.2.2 不能删除以及改进方式分…

【HTML】第 1 节 - HTML 初体验

欢迎来到博主 Apeiron 的博客,祝您旅程愉快 。 时止则止,时行则行。动静不失其时,其道光明。 目录 1、缘起 2、HTML 概念 2.1、HTML 定义 2.2、标签语法 3、HTML 基本骨架 4、标签的关系 5、注释 6、总结 1、缘起 最近在学习微信小程…

程序员0基础转行大数据年薪25万,只因我做了这件事...

现在我在成都的一家企业做大数据架构师,一个月税前可以拿到20k,还有项目奖金,一年下来最少也能拿25万。生活和工作也都在有条不紊地运转,每天也会有新的挑战,这正是我想要的生活。 01 机械工程专业 但我决定转行互联…

SpringBoot自定义starter之接口日志输出

文章目录 前言文章主体1 项目全部源码2 项目结构介绍3 starter 的使用3.1 配置文件 application,yml的内容3.2 启动类3.3 控制器类 4 测试结果 结语 前言 本文灵感来源是一道面试题。 要求做一个可以复用的接口日志输出工具,在使用时引入依赖,即可使用。…

MySQL数据库 10.DCL操作

目录 🤔 前言: 🤔DCL介绍: 🤔1.DCL管理用户: 1.查询用户: 图示: 2.创建用户 示例1: 运行结果:​ 示例2: 运行结果:​ 3.修改…

算法修炼之筑基篇——筑基一层中期(解决01背包,完全背包,多重背包)

✨博主:命运之光​​​​​​ 🦄专栏:算法修炼之练气篇​​​​​ 🍓专栏:算法修炼之筑基篇 ✨博主的其他文章:点击进入博主的主页​​​​​​ 前言:学习了算法修炼之练气篇想必各位蒟蒻们的基…

安全——网络安全协议的引入

TCP/IP安全缺陷 信息泄露 概述 网络中投递的报文往往包含账号、口令等敏感信息,若这些信息泄露则是灾难性的后果。其中嗅探是一种常见而隐蔽的网络攻击手段。 嗅探 概述 问题:在共享式网络架构下,所有的数据都是以广播方式进行发送&…

程序员大专毕业,月薪2w是什么体验?

在这个数据驱动的时代,大数据行业的发展前景也非常广阔,我相信我的未来会越来越光明 01 开始学习 是迈向前方的第一步 我是三月,一个来自小城市的大专毕业生。现在在杭州一家公司做大数据开发工程师,目前薪资是20k*13。 我本身…

运维小白必学篇之基础篇第十三集:网络概述中继实验

网络概述中继实验 实验作业(主机名为自己的名字): 1、搭建中继环境,要求如下: 网络要求: 内网:192.168.50.50 网关:192.168.50.254 192.168.60.254 外网:192.168.60.60 主…

【论文阅读】An Object SLAM Framework for Association, Mapping, and High-Level Tasks

一、系统概述 这篇文章是一个十分完整的物体级SLAM框架,偏重于建图及高层应用,在前端的部分使用了ORBSLAM作为基础框架,用于提供点云以及相机的位姿,需要注意的是,这篇文章使用的是相机,虽然用的是点云这个…

DevOps该怎么做?

年初在家待了一段时间看了两本书收获还是挺多的. 这些年一直忙于项目, 经历了软件项目的每个阶段, 多多少少知道每个阶段是个什么, 会做哪些事情浮于表面, 没有深入去思考每个阶段背后的理论基础, 最佳实践和落地工具. 某天leader说你书看完了, 只有笔记没有总结, 你就写个总结…

小白必看!轻松理解和解决MySQL幻读问题!

大家好,我是小米!今天我来给大家分享一下关于MySQL数据库中常见的一个问题——幻读,以及如何解决它。相信对于数据库开发和管理的小伙伴们来说,幻读是一个相对棘手的问题,但只要我们掌握了正确的解决方法,它…

网络故障管理

网络故障管理是以最快的方式查找、隔离和排除网络故障的过程。故障管理是网络管理的重要组成部分,它通过快速解决故障来最大限度地减少停机时间并防止设备故障,从而确保最佳的网络可用性并防止业务损失。 网络故障监控是故障管理的第一步,因…

Linux Shell脚本攻略

一、echo命令 1、在echo中转义换行符 默认情况下,echo会在输出文本的尾部追加一个换行符。可以使用选项-n来禁止这种行为。 echo同样接受双包含转义序列的双引号字符串作为参数。在使用转义序列时,需要使用echo -e "包含转义序列的字符串"这…

有哪些测试框架和工具推荐? - 易智编译EaseEditing

在软件测试领域,有许多测试框架和工具可供选择。以下是一些常见的测试框架和工具的推荐: Selenium: 一个用于自动化Web应用程序测试的流行框架。它支持多种编程语言,并提供丰富的功能和灵活性。 JUnit: 一个用于Java应用程序的单元测试框架…

MongoDB(学习笔记1.0)

最近在学非关系型数据库MongoDB,猛地用起来的真的没关系型数据库方便啊。 首先还是数据库的安装: 安装直接去官网安装即可,官网地址:MongoDB: The Developer Data Platform | MongoDB 当前也有免安装版的,这里就不再…

毕业三年,自学软件测试到就业,我用了4个月

我转行的经历 17年毕业,普通专科,通信专业。 当初选择这个专业是因为有一个校企合作,承诺学生毕业之后给学生安排就业,在学校里面混了三年之后,学校也是履行了当初安排就业的承诺,给我“发配”到了上海&a…

chatgpt赋能python:Python同一行输入

Python同一行输入 在Python编程中,你可能需要在同一行中输入多个命令或语句。这可以通过使用分号来实现。 在本文中,我们将介绍如何在Python中使用同一行输入,并探讨其优缺点。 使用分号实现同一行输入 在Python中,分号&#x…