日常测试工作中如果发现bug经常需要去检查log以便定位问题,这篇文章主要介绍一下如何获取android端日志及日志分析及问题定位。
一.
>>>获取日志<<<
1、使用adb logcat命令获取日志
打开cmd窗口1,执行如下命令行
-v参数:指定输出格式,其他参数这里不详细介绍;
> \d:\fatal1.txt 将日志输出到本地;
通过以上命令行,可将android系统的日志保存到本地
2、使用adb pull命令从android系统底层导出日志。
adb pull 移动端log存储路径 本地路径。
如果不加本地路径,默认将log拉取到命令行当前执行的路径。
3、adb logcat 命令与monkey结合获取日志
重新打开一个cmd窗口2,执行如下命令行。
可启动monkey测试。Monkey测试结束,在窗口1输入快捷键ctrl+c停止抓取日志。
二.
>>>分析日志<<<
1、--------- beginning of xxxx
日志以--------- beginning of xxxx为起点,开始捕捉A ndroid日志。xxx对应存储Android日志记录器的环形缓冲区。
环形缓冲区主要有以下几种:
- Radio:无线电,无线网络设备/电话通讯相关log- System:系统,系统组件或系统应用的log - Event:事件,事件/监听相关log- Main:主要,所有java层的log,遗迹不属于上面3层的log- Crash:崩溃,应用崩溃时在此写入崩溃信息log
2、02-21 11:55:43.893 E/AndroidRuntime(28761): FATAL EXCEPTION: main
- 日志时间: 12-27 18:00:02.6011. 日志优先级:E1. 便签:AndroidRuntime1. 日志正文: FATAL EXCEPTION: main
日志优先级主要有以下几种:
- V-Verbose 级别最低,开发调试中的一些详细信息,不常见- D-Debug 调试,调试信息,开发中经常选择输出此种级别的日志,较常见- I—Info 信息,该等级日志显示运行状态信息,可在产品出现问题时提供帮助,从该级别开始的日志通常包含完整意义的英语语句和调试信息,是最常见的日志级别。- W—Warning 警告,运行出现异常即将发生错误或表明已发生非致命性错误,该级别日志通常显示出执行过程中的意外情况,例如将try-catch语句块中的异常打印堆栈轨迹之后可输出此种级别日志。- E—Error 错误,已经出现可影响运行的错误,比如应用crash时输出的日志。- F—Fatal 严重错误,比error级别更高,目前只在android系统内核发出的日志中看到此种级别。- S—Silent 寂静,最高级别,没有一条日志会属于这个级别,仅仅作为关闭logcat输出的过滤器参数
三.
>>>几种问题的定位<<<
1、定位及分析崩溃问题
定位android应用崩溃问题,主要在日志中搜索fatal关键字,搜索到fatal关键字后,查找上下文中输入的信息是否是当前测试app进程的包名,如果是的话,可以定位次出崩溃时由当前app引起,具体导致崩溃的原因需要具体再分析日志。
如上图所示,搜索到fatal关键字,并发现进程名是测试app的进程名,接下来分析导致崩溃的原因可以发现是因为启动一个activity失败导致的崩溃,分析到这里可以将日志提供给开发来解决此问题。
2、定位及分析无响应问题
定位Android应用发生无响应的问题,同理,主要在日志中搜索anr关键字。如果查找到anr关键字的话,需要在获取额外的trace文件来辅助分析问题。
可通过命令行adbpull /data/anr/trace.txt 来获取trace文件。具体分析虚拟机信息,搜索Dalvik Thread关键词,快速定位到本应用程序的虚拟机信息日志。
到此可将日志提供给开发,解决此处无响应的问题。
转载自 360质量效能