热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

日志文件_logcat/trace.txt日志文件的分析

本文由编程笔记#小编为大家整理,主要介绍了logcat/trace.txt日志文件的分析相关的知识,希望对你有一定的参考价值。1.logcat日志文件
本文由编程笔记#小编为大家整理,主要介绍了logcat/trace.txt日志文件的分析相关的知识,希望对你有一定的参考价值。

1.logcat日志文件

>android日志系统提供了记录和查看系统调试信息的功能,日志都是从各种软件和一些系统的缓冲区中记录下来的,缓冲区可以通过logcat命令来查看和使用

使用方式:

adb logcat [

>logcat是以如下开头的:

   ---------beginning of xxx

>开发者选项,有个叫做“日志记录器缓冲区大小”,默认是256k,日志是循环写入环形缓冲区的,通常情况下,写满时最旧的日志会被删除以给新输出的日志留内存空间

2.log缓冲区

android log输出量巨大,特别是通信系统的log,因此android把log输出到不同的缓冲区。

目前定义了四个log缓冲区:

Radio:输出通信系统的log        如,nfc、3G/4G  蓝牙、wifi等

System:输出系统组件的log      如,调用摄像头等

Events:输出event模块的log     如,触摸事件、按键事件

Main:输出java层的log(不属于上面三层的log),测试app过程着重关注Main模块

注意:

默认输出Main缓冲区log,如想输出通信系统的log:

adb logcat -b  radio  >  D: estlog_radio.txt       -- 重定向输出日志

3.logcat日志文件分析

输出的日志格式如下:

技术图片

3.1由5部分组成:

>写下日志时的时间

日志中添加时间:adb logcat   -v  time   >  D: estlog.txt 

>优先级,在Android中,日志的优先级从低到高分以下几种:

V--verbose(啰嗦,最低级别,开发调试中的一些详细信息,仅在开发中使用,不可在发布产品时使用)

D--Debug(调试,用于调试的信息,可以在发布产品中关闭,比较常见)

I--Info(信息,一般提示性的消息)

W--Warning(警告)

E--Error(错误,已经出现可影响运行的错误,比如应用crash时输出的日志)

>标签(tag),标明日志发起者和方便日志的过滤筛选,如上中的ActivityManger,开发自己定义的,方便查找

> PID(进程ID),如上中的491

>正文,本日志的主体内容

3.2 crash崩溃

>现象:提示xx停止运行

>如何在日志中检索?

出现崩溃后,输出最新日志,搜索 FATAL EXCEPTION关键字(代表严重错误)、crash关键字 ,然后将找到的E级别日志(方法调用栈)全部提交给到开发

3.3ANR无响应

>现象:当操作在一段时间内系统无法处理时,系统层面会弹出下图那样的ANR对话框

技术图片

>为用户在主线程长时间被阻塞时提供处理交互,提高用户体验

>Android系统一种自身检测机制

>如何在日志中检索?

技术图片

 

 

出现ANR后,输出最新日志,搜索ANR in 关键字,但是根据E级别日志开发往往不能定位ANR问题,需要找到上图红框中标出的traces.txt文件,从而找到方法调用栈,使得开发能够定位问题

>>如何找到traces.txt?

adb shell 

cd /data/anr

ls

找到traces.txt 文件,exit

拉取到本地:adb  pull  /data/anr/traces.txt   D: est

注意:

traces.txt时间和缓冲区日志时间会有差异(几秒),因为属于两个不同的模块,系统不会同步写

traces.txt只能保留最近一次的anr信息

>解决只能保留最近一次的anr信息的方法,dropbox 

adb  shell 

依次找到  /data/system/dropbox 目录,如图:

技术图片

 

 

 data_app开头的是第三方手动安装的应用异常信息,然后就可以把/data/system/dropbox目录拉取出来然后给到开发人员

===============================================

需要说明的是:

>安卓手机碎片化严重,不能保证每台手机都有Dropbox

>不是所有手机都是root权限

上述两种情况下:

其实直接把traces.txt 文件拉取出来就好:adb  pull  /data/anr/traces.txt   D: est

说到底,如果app出现问题的话logcat系统级别的日志(adb logcat   -v  time   >  D: estlog.txt )  会体现出来,除非开发做了异常捕获,那就需要问开发是不是做了异常捕获,捕获到了哪里~

 


推荐阅读
  • 大类|电阻器_使用Requests、Etree、BeautifulSoup、Pandas和Path库进行数据抓取与处理 | 将指定区域内容保存为HTML和Excel格式
    大类|电阻器_使用Requests、Etree、BeautifulSoup、Pandas和Path库进行数据抓取与处理 | 将指定区域内容保存为HTML和Excel格式 ... [详细]
  • 在软件开发过程中,经常需要将多个项目或模块进行集成和调试,尤其是当项目依赖于第三方开源库(如Cordova、CocoaPods)时。本文介绍了如何在Xcode中高效地进行多项目联合调试,分享了一些实用的技巧和最佳实践,帮助开发者解决常见的调试难题,提高开发效率。 ... [详细]
  • 在《Cocos2d-x学习笔记:基础概念解析与内存管理机制深入探讨》中,详细介绍了Cocos2d-x的基础概念,并深入分析了其内存管理机制。特别是针对Boost库引入的智能指针管理方法进行了详细的讲解,例如在处理鱼的运动过程中,可以通过编写自定义函数来动态计算角度变化,利用CallFunc回调机制实现高效的游戏逻辑控制。此外,文章还探讨了如何通过智能指针优化资源管理和避免内存泄漏,为开发者提供了实用的编程技巧和最佳实践。 ... [详细]
  • 深入解析 Synchronized 锁的升级机制及其在并发编程中的应用
    深入解析 Synchronized 锁的升级机制及其在并发编程中的应用 ... [详细]
  • Android 构建基础流程详解
    Android 构建基础流程详解 ... [详细]
  • Kotlin协程中async和await的常见异常陷阱及正确的异常处理方法
    在Kotlin协程中,`async`和`await`是常用的异步编程工具,尤其是在与Jetpack组件结合时,能够显著简化Android开发中的异步任务处理。然而,不当使用这些工具可能会导致常见的异常陷阱,如未捕获的异常或异常传播问题。本文将深入探讨这些陷阱,并提供有效的异常处理方法,帮助开发者避免潜在的问题,确保应用的稳定性和可靠性。 ... [详细]
  • Android UI设计:提升用户界面体验的关键要素
    在今年的谷歌I/O开发者大会上,北京时间5月19日凌晨1点,谷歌正式推出了Android 12 Beta 1系统,并公布了参与该版本开发者Beta测试计划的手机品牌。此次发布标志着Android 12在用户体验和界面设计上的重大改进,为开发者提供了更多创新工具和资源,以进一步提升用户的交互体验。 ... [详细]
  • 深入解析CAS机制:全面替代传统锁的底层原理与应用
    本文深入探讨了CAS(Compare-and-Swap)机制,分析了其作为传统锁的替代方案在并发控制中的优势与原理。CAS通过原子操作确保数据的一致性,避免了传统锁带来的性能瓶颈和死锁问题。文章详细解析了CAS的工作机制,并结合实际应用场景,展示了其在高并发环境下的高效性和可靠性。 ... [详细]
  • 在处理 XML 数据时,如果需要解析 `` 标签的内容,可以采用 Pull 解析方法。Pull 解析是一种高效的 XML 解析方式,适用于流式数据处理。具体实现中,可以通过 Java 的 `XmlPullParser` 或其他类似的库来逐步读取和解析 XML 文档中的 `` 元素。这样不仅能够提高解析效率,还能减少内存占用。本文将详细介绍如何使用 Pull 解析方法来提取 `` 标签的内容,并提供一个示例代码,帮助开发者快速解决问题。 ... [详细]
  • 如何撰写适应变化的高效代码:策略与实践
    编写高质量且适应变化的代码是每位程序员的追求。优质代码的关键在于其可维护性和可扩展性。本文将从面向对象编程的角度出发,探讨实现这一目标的具体策略与实践方法,帮助开发者提升代码效率和灵活性。 ... [详细]
  • 短信验证码安全性堪忧,多因素认证或成未来主流
    短信验证码安全性堪忧,多因素认证或成未来主流 ... [详细]
  • 本文是Java并发编程系列的开篇之作,将详细解析Java 1.5及以上版本中提供的并发工具。文章假设读者已经具备同步和易失性关键字的基本知识,重点介绍信号量机制的内部工作原理及其在实际开发中的应用。 ... [详细]
  • 本文详细解析了Autofac在高级应用场景中的具体实现,特别是如何通过注册泛型接口的类来优化依赖注入。示例代码展示了如何使用 `builder.RegisterAssemblyTypes` 方法,结合 `typeof(IEventHandler).Assembly` 和 `Where` 过滤条件,动态注册所有符合条件的类,从而简化配置并提高代码的可维护性。此外,文章还探讨了这一方法在复杂系统中的实际应用及其优势。 ... [详细]
  • 在尝试对 QQmlPropertyMap 类进行测试驱动开发时,发现其派生类中无法正常调用槽函数或 Q_INVOKABLE 方法。这可能是由于 QQmlPropertyMap 的内部实现机制导致的,需要进一步研究以找到解决方案。 ... [详细]
  • 浏览器作为我们日常不可或缺的软件工具,其背后的运作机制却鲜为人知。本文将深入探讨浏览器内核及其版本的演变历程,帮助读者更好地理解这一关键技术组件,揭示其内部运作的奥秘。 ... [详细]
author-avatar
手机用户2602924833
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有