| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 移动开发 -> 移动端测试——日志分析 -> 正文阅读 |
|
[移动开发]移动端测试——日志分析 |
Android?App?常见异常
CRASH
在应用程序代码中出现了未捕获异常,导致程序异常退出,具体表现为闪退或App停止运行。
发生crash的原因:
? ? 一般是因为业务代码导致了异常,比如空指针、索引越界、内存溢出等。
ANR(Application Not?Responding)
应用程序无响应,用户的输入操作在5s之内没有得到相应,此时Android系统就会判定出现了ANR,会显示一个ANR对话框,用户可以选择继续等待或者关闭应用程序。
发生ANR的原因:
?? ?Android的机制是通过主线程(UI线程)创建UI、更新UI状态及处理用户的事件操作。如果在主线程中做了其他的一些耗时操作,比如:数据库读取、文件读取、网络操作等就会主线程阻塞,导致无法及时相应用户的操作。
logcat日志
logcat是Android中用来查看日志的命令行工具,Android会在运行的时候将系统及应用程序的日志保存到 logcat 中。
adb?logcat?命令格式:
adb?logcat <参数> ... <过滤器> ...
logcat日志由以下部分组成:
?? ??? ?? ?
V —Verbose (啰嗦,最低级别,开发调试中的一些详细信息,仅在开发中使用,不可在? ? ?发布产品中输出)
?? ??? ?? ?
D —Devug (调试,用于调试的信息,可以在发布产品中关闭,比较常见)
?? ??? ?? ?
I —Info (信息,一般提示性的消息)
?? ??? ?? ?
W —Warning (警告)
?? ??? ?? ?
E —Error (错误,已经出现可影响运行的错误,比如应用crash时输出的日志)
?? ??? ?? ?
F —Fatal (严重的错误,已经出现可影响运行的错误,比如应用crash时输出的日志)
?? ??? ?? ?
S —Slient
?? ?? ? 5.? 标签(tag),日志发起者
?? ?? ? 6.? 正文,日志的主体内容
logcat?缓冲区
logcat?日志是保存在缓冲区中的,缓冲区可以通过logcat命令来查看和使用。
因为Android?logcat日志是实时不断打印的,所以需要用到环形缓冲区。在通常情况下,写满时最旧的日志会被删除以给新输出的日志留内存空间。
在开发者选项,有个选项就做“日志记录器缓冲区大小”,默认是256K。
Android?log?输出量非常多,因此Android会把不同类型的log输出到不同的缓冲区中:?? ?
?? ?? ? 1.?Radio:通讯系统的log,比如:蓝牙、WiFi、3G/4G等
?? ?? ? 2.?System:系统组件的log,比如:系统服务
?? ?? ? 3.?Event:事件的log,不如:触摸事件、按键事件
?? ?? ? 4.?Main:Java层的log,测试App需要重点关注的模块
如:想输出通信系统的log:
adb?logcat -b radio
默认log输出(不指定缓冲区的情况下)是输出Main和System缓冲区的log。
logcat 参数
logcat?过滤器
为了减少不想要日志的输出,可以建立一个过滤器
过滤语法:
tag:priority
比如:
#?仅输出tag为“ActivityManager”且优先级大于等于“info”
adb logcat -s ActivityManager:I
#?显示所有优先级大于等于“warning”的日志
adb logcat -s *:W
traces?日志
Android系统每次发生ANR后,都会在 /data/anr/?目录下面输出一个traces.txt?文件,这个文件记录了发生问题进程的虚拟机相关信息和线程的堆栈信息,通过这个文件我们就能分析出当前线程正在做什么操作,继而可以分析出ANR的原因。
获取traces.txt?文件
adb pull /data/anr/traces.txt <本地电脑路径>
需要注意:在Android 10?以下的系统会使用上述命苦可以导出traces文件,但是在Android 10及以上版本traces文件做了优化,会根据时间戳来分别生成单独的traces文件(可以避免traces文件覆盖问题),而且通过 adb pull?导出?traces文件时会提示 Permission denied?
解决方案:获取 bugreport?日志
bugreport?日志
bugreport文件中记录了系统运行过程中的各种log信息,bugreport中包含了设备日志、堆栈轨迹和其他诊断信息,可以帮助开发人员查找和修复应用中的错误。
获取bugreport?日志
第一种:
1.?在开发者选项中,选择生成 bug report
2.? 选择bug report?类型,过一会就会在通知栏收到一个报告准备好的通知
第二种:
adb bugreport <本地电脑目录>
bugreport?日志分析
bugreport?往往会包含大量的文件内容,可以利用工具 ChkBugReport 。
使用步骤:
????????java -jar chkbugreport-0.5-215.jar "bugreport-XXX.txt"
IOS端日志分析
ios设备上的应用崩溃之后,操作系统会生成一个崩溃报告,也叫崩溃日志,保存在设备上。
常见的日志获取方式有以下几种:
移动端日志系统
日志系统,是移动端定位排查线上问题非常有效的一个工具,它还可以帮助我们统计用户行为、发现代码运行问题等。
第三方商业日志系统
?? ?? ? 1.?腾讯Bugly:https://bugly.qq.com
?? ?? ? 2.?友盟:https://developer.umeng.com/docs/119267/detail/119477
?? ?? ? 3.?听云:https://www.tingyun.com/
开源日志框架
?? ?? ? 1.?美团的Logan:https://github.com/Meituan-Dianping/Logan
?? ?? ? 2.?微信的xLog:https://github.com/Tencent/mars
|
|
移动开发 最新文章 |
Vue3装载axios和element-ui |
android adb cmd |
【xcode】Xcode常用快捷键与技巧 |
Android开发中的线程池使用 |
Java 和 Android 的 Base64 |
Android 测试文字编码格式 |
微信小程序支付 |
安卓权限记录 |
知乎之自动养号 |
【Android Jetpack】DataStore |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年2日历 | -2025/2/28 23:29:16- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |