logcat日志分析

    一、简介:
        1、Android日志系统提供了记录和查看系统调试信息的功能,日志都是从各种软件和一些系统的缓冲区中记录下来的,缓冲区可以通过logcat命令来查看和使用。
        
        2、logca 日志开头:
        1....... beginning of xxx
        
        
        3、开发者选项,有一个选项叫做“日志记录器缓冲区大小”,默认是256K,日志是循环写入环形缓冲区的,在通常情况下,写满时最旧的日志会被删除以给新输出的日志留内存空间。
        
    二、logcat缓冲区
        
        Android log 输出量巨大,特别是通信系统的log,因此,Android把log输出到不同的缓冲区中,目前定义了四个log缓冲区:
            
            Radio : 输出通信系统的log,如:WiFi,蓝牙,3/4/5G,GPS,NFC等
            System: 输出系统组件的log,权限比较高,如:调用相机,调用录制,调用麦克风等
            Events: 输出event模块的log,event翻译过来就是事件,如:通过手指点击屏幕的某一处地方,称为点击事件;通过按电源或者音量加减等
            Main:    所有java层的log,(不属于上面3层的log)
            
        如果测试APP,需要输出Main,命令:adb logcat -b radio,adb logcat 默认抓取Main
        
    三、日志文件分析
        
         adb logcat -v time > logcat.txt
        
        输出的日志格式如下所示:
        
            
            
        由五部分组成:
        
            1、写下日志的时间,如上中 “05-22 12:27:15.370”
            
            2、优先级,在Android 中,日志的优先级从低到高分成以下几种:
            
                V ---Verbose(啰嗦,最低级别,开发调试中的一些详细信息,仅在开发中使用,不可在发布产品上打开)
                D ---Debug(调试,用于调试的信息,可以在发布产品中关闭,比较常见)
                I ---Info(信息,一般提示性的消息)
                W ---Warning(警告)
                E ---Error(错误,已经出现可影响运行的错误,比如应用crash时输出的日志)
                
            3、标签(tag),标明日志发起者和方便日志的过滤筛选,如上中“libTGL”
            
            4、PID(进程ID),如上中 “1438”
            
            5、正文,本日志的主体内容
        
    四、常见问题日志查找(抓取的日志中需要有“方法调用栈”)
    
        1、crash问题(程序崩溃,弹出某某程序停止运行框)

                                  
        
            在日志中搜索“FATAL EXCEPTION” ,发现 优先级为 E,下面的都是错误日志
        
        2、ANR问题
            
            ANR 全名 Application Not Responding,也就是应用无响应,当操作在一段时间内系统无法处理时,系统层面会弹出右图那样的ANR 对话框。

 

                


            
                1.为用户在主线程长时间被阻塞时提供处理交互,提高用户体验
                2.Android系统一种自身检测机制

 


                
            在日志中搜索 “ANR in” ,发现 优先级为 E,下面的都是错误日志,但是下面说的都是一下 发生ANR 前和发生后 CPU 的情况;在“ANR in” 的上一行日志 “wrote stack trance to '/data/anr/traces.txt'” ----------这行日志说明,系统把“方法调用栈”的日志写在了traces.txt里
            
            打开 traces.txt 后,发现时间和anr发生的时间不对应,是因为:两份日志是处于不同的模块,导致有时间上的差异,差异在几秒内;但是traces日志有一个特点,他只会保存最新的一份报错的日志,如果有多次报错,会被覆盖。
            
            这里可以使用的“dropbox”,文件路径在 “/data/system/dropbox”,在此目录中,如果是“SYSTEM_BOOT”开头,为系统启动的日志,“data_app”开头的,为手动安装的第三方的日志,里面gz结尾的压缩包文件,内容已经有了anr或者crash的 logcat日志和 方法调用栈 日志。(注释:一个anr一个文件)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值