Android日志获取与解析

这篇具有很好参考价值的文章主要介绍了Android日志获取与解析。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

bugreport

获取报告

Android developers🔗

设备

1、启用开发者选项(连续点击设备版本号
2、点击bug报告(不同系统稍有差异
3、选择所需bug报告类型,点击报告
4、通知栏会有完成提示,点击可分享
5、文件管理中可找到报告文件

模拟器

“Extended controls”窗口中的 File a bug 功能:
1、点击模拟器面板中的 More 图标
2、在 Extended controls 窗口中选择 Bug report
此时系统会打开一个屏幕,您可以在其中查看 bug 报告详细信息,例如屏幕截图、AVD 配置信息和 bug 报告日志。您还可以输入一条包含重现步骤的消息,以便与报告一起保存。
3、等待 bug 报告完成收集,然后点击 Save Report

adb命令

adb bugreport 路径

用户

1、GooglePlay管理中心
2、build.gradle中添加Firebase崩溃报告功能

报告目录

生成的报告文件默认命名为bugreport-BUILD_ID-DATE.zipandroid日志抓取工具,Android相关,android
bugreport-BUILD_ID-DATE.txt就是 bug 报告,包含系统服务 (dumpsys)、错误日志 (dumpstate) 和系统消息日志 (logcat) 的诊断输出,系统消息包括设备抛出错误时的堆栈轨迹,以及从所有应用中使用 Log 类写入的消息。

阅读错误报告

Android source🔗

logcat

Android developer🔗

定义

logcat是一个命令行工具,用于转储系统消息日志,包括设备抛出错误时的堆栈轨迹,以及从所有应用中使用 Log 类写入的消息。

日志记录

系统进程logd维护的一组结构化环形缓冲区,缓冲区是固定由系统定义的。类型包含如下:日志缓冲区

抓取日志

adb shell logcat,可简写为adb logcat
adb logcat --help查询可用选项
每行记录以timestamp PID TID log-level开头

过滤优先级

以下优先级由低到高:

  • V-Verbose:详细
  • D-Debug:调试
  • I-Info:信息
  • W-Warn:警告
  • E-Error:错误
  • F-Fatal:严重错误
  • S:静默(不输出任何内容)
输出格式

修改日志的输出格式,以显示特定的数据字段

格式修饰符

adb logcat -v --help

  • brief,显示优先级/标记、PID
  • long,显示所有元数据字段,空行分隔消息
  • process,只显示PID
  • raw,显示原生日志信息,没有其他元数据字段
  • tag,只显示优先级/标记
  • thread,显示优先级、PID、TID
  • threadtime,显示日期、调用时间、优先级、标记、PID、TID(默认)
  • time显示日期、调用时间、优先级、标记、PID

android日志抓取工具,Android相关,android

日志缓冲区
分类

android日志记录系统Logger为日志消息保留了多个环形缓冲区,并非所有消息都会发送到默认的环形缓冲区,缓冲区满后新的日志就会覆盖旧的日志

adb logcat -b <buffer>,查看任意缓冲区
adb logcat -b <buffer> -b <buffer> -b <buffer>
adb logcat -b <buffer>、<buffer>、<buffer>,查看多个缓冲区

  • radio:包含无线装置、电话相关消息的缓冲区
  • events:已经过解译的二进制系统事件缓冲区消息
  • main:主日志缓冲区(默认),不包含系统和崩溃日志消息
  • system:系统日志缓冲区(默认)
  • crash:崩溃日志缓冲区(默认)
  • all:所有缓冲区
  • defalut:报告main、system、crash缓冲区
大小

重定向日志时会出现以下提示,如提示,要么是设备关机导致日志进程崩溃,要么是操作事件日志产生过多导致缓冲区无法存储,所以需要调整缓冲区大小
android日志抓取工具,Android相关,android
adb logcat -g,查看缓冲区大小

调整缓冲区大小

  • adb logcat -G size,重启后缓冲区需重新设置
  • adb shelllogcat -G size,重启后缓冲区仍为设置后大小
  • 开发者选项 - 日志记录器缓冲区大小,重启后缓冲区仍为设置后大小

ANR

Android developers🔗

触发ANR

Application Not Responding,应用无响应
一定时间内一些事件未得到有效响应或响应时间过长,系统就会出现ANR,系统会终止该进程并将堆栈转储到/data/anr

Android中应用响应性由Activity管理器和窗口管理器系统服务监控。当Android检测到一下某一条件时,便会显示相应ANR:

  • 5秒内输入事件未响应
  • broadcastreceiver在10秒内尚未执行完毕

避免ANR

Android应用通常完全在单线程中运行(默认为界面线程或主线程)。应用在界面线程汇总执行任何需要很长时间的操作都有可能触发ANR,因为应用没有给自己处理输入事件或intent广播的机会。

因此,在可能需要执行冗长操作的情况下,不应在界面线程中执行这些操作,而是应该创建工作线程并在其中执行大部分操作,让界面线程保持运行,阻止系统断定代码卡住。尤其是onCreate()onResume() 等关键生命周期方法。

工作线程

使用场景:

  • 长时间运行操作,如网络或数据库操作
  • 计算成本高昂的操作,如调整位图大小

如果是数据库操作,应通过异步请求完成

ANR日志

定位无响应应用

1、/data/anr下的转储文件
2、bugreport-BUILD_ID-DATE.txt中查找am_anr

06-28 18:23:49.041  1000  1615  9666 I am_anr  : [0,3297,com.android.systemui,818462221,Input dispatching timed out (eddf1c1 NavigationBar0 (server) is not responding. Waited 6293ms for MotionEvent(deviceId=4, source=0x00001002, displayId=0, action=DOWN, actionButton=0x00000000, flags=0x00000000, metaState=0x00000000, buttonState=0x00000000, classification=NONE, edgeFlags=0x00000000, xPrecision=1.0, yPrecision=1.0, xCursorPosition=nan, yCursorPosition=nan, pointers=[0: (499.3, 492.6)]), policyFlags=0x62000000)]

3、logcat日志中查找ANR in

查看堆栈跟踪

找到ANR对应的堆栈跟踪,确定时间戳和PID,检查进程的主线程,主线程是了解ANR发生时系统正在做的事,不一定是导致ANR的真正原因。

死锁

线程 A 在等待线程 B 占用的某些资源,而线程 B 也在等待线程 A 占用的某些资源。

死锁的往往首先表现为ANR,日志中会有类似信息WATCHDOG KILLING SYSTEM PROCESS。用户所见表现为设备重新启动,这种是运行时重启,并非真正的设备重新启动。(这两概念奇奇怪怪)

  • 运行时重启,系统服务器死机并重启,设备返回到显示启动动画
  • 设备重新启动,内核已崩溃,设备返回google启动徽标

线程粘滞:执行时间超过“粘滞线程最长时间”(默认是600秒)的线程。

activity

应用组件,提供屏幕与用户互动执行操作,activity通过 ActivityManager运行进程
一个界面就是一个activity?

聚焦状态的activity,am_focused_activity
进程启动事件,Start proc
系统颠簸,am_proc_diedam_proc_start

内存

设备物理内存是有显示的,因为管理随机存取存储器很重要

内存不足

内存不足时系统会终止某些进程来释放内存,但又会继续启动其他进程,因此可能导致系统颠簸。

内存不足还可能会减慢任务切换速度,并可能阻止进行返回尝试(返回任务被终止)。如果启动器被终止,那么,用户触摸主屏幕按钮时会重启,并在日志中记录启动器重新加载

am_low_memory表示最后一个缓存的进程已终止

内存快照

内存快照是一种dumpstate,其中会列出正在运行的JAVA进程和本机进程,快照仅提供特定时刻的状态,快照之前的系统状况不一定好/坏

广播

应用生成广播,在当前应用内发送事件或向其他应用发送事件文章来源地址https://www.toymoban.com/news/detail-769734.html

显示器争用

后台编译

叙述

电源

程序包

进程

扫描

到了这里,关于Android日志获取与解析的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • android上架备案公钥和md5获取工具

    最近很多公司上架遇到了一个问题,就是要提供app的备案证明,现在android上架都需要备案了,但是我们的证书都是通过工具生成的,哪里知道公钥和md5那些东西呢?无论安卓备案还是ios备案都需要提供公钥和md5。 包括ios的备案也是,找了很多教程,都是叫我们通过代码来读

    2024年02月09日
    浏览(45)
  • Android 10.0 pms中关于启动app时获取app的ActivityInfo信息相关源码分析

     在android10.0的系统rom定制化开发中,在对于app启动时,通过Launcher调用pms来查询app的相关ActivityInfo的相关信息,然后调用 ams来启动activity,这篇来分析pms中获取app的ActivityInfo的相关信息的相关源码分析

    2024年02月02日
    浏览(73)
  • Android Studio实现解析HTML获取图片URL将图片保存到本地

    效果 项目本来是要做成图片保存到手机然后读取数据后瀑布流展示,但是有问题,目前只能做到保存到手机 activity_main.xml MainActivity ImageItem ImageAdapter

    2024年02月12日
    浏览(41)
  • Android设置app开机自启,网络监听,主线程完成UI渲染,HTTP网络请求工具,json数据处理,android使用sqlite,Android定时任务,日志打印

    在AndroidManifest.xml文件中添加权限 在AndroidManifest.xml文件中注册接收广播配置, 添加到manifest application节点下 在AndroidManifest.xml文件中添加节点属性, 指定安装目录为内部存储器, 而非SD卡 开机启动执行代码 gson是谷歌… implementation ‘gson-2.8.5’ 依赖无法下载, 直接使用jar包, 将ja

    2024年02月03日
    浏览(53)
  • Android查看签名信息系列 · 使用逆向分析工具JadxGUI获取签名

    前言 Android查看签名信息系列之使用逆向分析工具JadxGUI获取签名,通过这种方式,可以获取到的签名信息包括:MD5、SHA1、SHA-256、公钥(模数)等信息 实现方法 1、进入JadxGUI目录下的lib文件夹内,找到jadx-gui-1.4.7.jar文件 2、双击jadx-gui-1.4.7.jar进入图形界面,或者cmd进入lib所在路径

    2024年02月03日
    浏览(47)
  • Android Spider Frida-Dexdump 脱壳工具下载使用以及相关技术介绍

    本案例使用的App是:引力播.apk,涉及到查壳、脱壳、反编译; 提示:以下是本篇文章正文内容,下面案例可供参考 ApkScan-PKID 查壳工具下载使用:https://blog.csdn.net/EXIxiaozhou/article/details/127196615 JDAX-GUI 反编译工具下载使用:https://blog.csdn.net/EXIxiaozhou/article/details/127207762 Apk下载地

    2024年02月02日
    浏览(57)
  • Android Spider JDAX-GUI 反编译工具下载使用以及相关技术介绍

    反编译工具有很多种,我推荐JADX,后续有更好的反编译工具我会继续补充 jadx 本身就是一个开源项目,源代码已经在 Github 上开源了 官方地址:https://github.com/skylot/jadx zip下载地址:https://github.com/skylot/jadx/releases/tag/v1.4.4 Windows系统我建议走上方的zip下载链接进行下载 Java 1.8

    2023年04月08日
    浏览(43)
  • Android Spider ApkScan-PKID 查壳工具下载使用以及相关技术介绍

    1、壳的功能:壳最本质的功能就是实现加载器,壳是指在一个程序的外面再包裹上另外一段代码,保护里面的代码不被非法修改或反编译的程序。它们一般都是先于程序运行,拿到控制权,然后完成它们保护软件的任务,深入点就是在apk外面再套一层壳,在运行的时候这层壳

    2024年01月15日
    浏览(41)
  • Android Studio实现解析HTML获取图片URL,将URL存到list,进行列表展示

    效果 build.gradle(app)添加的依赖(用不上的可以不加) AndroidManifest.xml 错误 如果出现错误: app:checkDebugDuplicateClasses 参考这篇博客尝试解决 代码 activity_main.xml 设置recyclerview item_image.xml 设置在recycleView显示的数据格式 MainActivity Image适配器 ImageModel 接收图片URL

    2024年02月12日
    浏览(45)
  • Android Studio实现解析HTML获取json,解析json图片URL,将URL存到list,进行瀑布流展示

    效果 build.gradle(app)添加的依赖(用不上的可以不加) AndroidManifest.xml 错误 如果出现错误:app:checkDebugDuplicateClasses 参考这篇博客尝试解决 activity_main.xml item_image.xml MainActivity Image适配器 ImageModel 接收图片URL

    2024年02月12日
    浏览(57)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包