App测试之App日志收集及adb常用命令

文章目录

  • 前言
  • 一、adb是什么
    • 1.APP测试收集手机日志常用的工具
    • 2.adb下载与安装
    • 3.ADT/SDK/ADB是什么
    • 4.adb连接真机
  • 二、adb常用命令
  • 三、android系统日志文件
    • 1.logcat日志文件
    • 2.logcat日志文件分析
  • 四、分析crash & ANR 日志
    • 1.发生crash如何分析
    • 2.发生ANR如何分析
  • 总结
    • 扩展(IOS app定位日志)

前言

adb的全称为Android Debug Bridge,就是起到调试桥的作用。通过adb可以在Eclipse中通过DDMS来调试Android程序,说白了就是调试工具。

adb的工作方式比较特殊,采用监听Socket TCP 5554等端口的方式让IDE和Qemu通讯,默认情况下adb会daemon相关的网络端口,所以当我们运行Eclipse时adb进程就会自动运行。

  • adb是android sdk里的一个工具,用这个工具可以直接操作管理android模拟器或者真实的android设备,它的主要功能有:
    • 运行设备的shell(命令行)
    • 管理模拟器或设备的端口映射
    • 计算机和设备之间上传/下载文件
    • 将本地apk软件安装至模拟器或android设备

ADB是一个 客户端-服务器端 程序, 其中客户端是你用来操作的电脑,,服务器端是android设备

一、adb是什么

1.APP测试收集手机日志常用的工具

  1. ADT

    收集开发人员使用最多的开发工具,也是可以实现从pc端获取手机端的文件

  2. SDK

    收集开发人员使用最多的开发工具,也是可以实现从pc端获取手机端的文件

  3. ADB

    测试人员最常用的工具,通过pc端收集手机端的文件

2.adb下载与安装

  • adb下载与安装:https://blog.csdn.net/weixin_44904239/article/details/134733985

3.ADT/SDK/ADB是什么

  • ADT

    ADT(Android development tools)——Android开发工具。在Eclipse上调用各种与android有关的插件,便要ADT。

  • SDK

    SDK(software development kit)——软件开发工具包。要用到各种android平台,好比android2.3等,便要有SDK

  • ADB

    ADB(Android debug bridge)——安卓调试桥。是用来连接安卓手机和PC端的桥梁,通过adb服务,在PC端命令行界面对手机或者模拟器进行全面的操作

    adb的全称为Android Debug Bridge,就是起到调试桥的作用。通过adb可以在Eclipse中通过DDMS来调试Android程序,说白了就是调试工具。

    adb的工作方式比较特殊,采用监听Socket TCP 5554等端口的方式让IDE和Qemu通讯,默认情况下adb会daemon相关的网络端口,所以当我们运行Eclipse时adb进程就会自动运行。

    • adb是android sdk里的一个工具,用这个工具可以直接操作管理android模拟器或者真实的android设备,它的主要功能有:
      • 运行设备的shell(命令行)
      • 管理模拟器或设备的端口映射
      • 计算机和设备之间上传/下载文件
      • 将本地apk软件安装至模拟器或android设备

    ADB是一个 客户端-服务器端 程序, 其中客户端是你用来操作的电脑,,服务器端是android设备

4.adb连接真机

  • 方法一:USB连接调试

    • 1.使用usb数据线连接好电脑

    • 2.手机打开调试模式,勾选usb调试模式(每个手机打开方式不一样,找不到可以通过百度查找)
      参考链接:https://support.oppo.com/cn/answer/?aid=SI2105995
      在这里插入图片描述

    • 3.电脑端打开命令提示符,输入adb devices 检测,能出现设备列表代表连接成功

      在这里插入图片描述

  • 方法二:Wifi连接调试

    Android设备与将运行 adb 的电脑连接到同一个局域网,比如连到同一个 WiFi

    • 1.使用usb数据线连接好电脑

    • 2.打开命令提示符,运行adb devices,测试是否连接成功,能出现设备列表即可

      在这里插入图片描述

    • 3.运行adb tcpip 5555(另外设立一个端口,实现手机与电脑的连接),然后断开USB连接

      在这里插入图片描述

    • 4.通过手机状态信息,查看手机的IP地址(一般会在 设置-关于手机-状态信息 里面)
      在这里插入图片描述

    • 5.运行 adb connect 手机IP地址,若出现:connected to 手机IP地址:5555 说明连接成功

      adb connect 192.168.31.36	若出现:connected to 192.168.31.36:5555 说明连接成功
      

      在这里插入图片描述

    • 6.输入adb devices检测是否连接成功

      在这里插入图片描述

二、adb常用命令

  • 查看帮助手册

    adb --help
    
  • 查看连接设备(检测连接到电脑的设备)

    adb devices
    

    在这里插入图片描述

  • 根据IP地址连接对应设备

    adb connect 要连接设备的IP地址
    

    在这里插入图片描述

  • 登陆设备shell(进入到 linux命令环境了,相当于执行远程命令)

    adb shell	#使用exit命令退出
    

    在这里插入图片描述

  • 从手机中拉取信息放到本地电脑上

    adb pull 手机文件路径 电脑端路径
    

    例子

    #将手机/sdcard/Android/data目录下的Test.txt文件拉取到电脑端的D盘根目录下
    adb pull /sdcard/Android/data/Test.txt D:\
    

    在这里插入图片描述

  • 从本地推送信息到手机上去

    adb push 电脑端文件路径 手机端路径
    

    例子

    adb push D:\Test1.txt /sdcard/Android/data/
    

    在这里插入图片描述

    • 打印log信息
    adb logcat -v time > pc端日志文件路径
    

    例子

    adb logcat -v time > D:\log.txt
    

    在这里插入图片描述

  • 查看前台应用包名

    #Android 7.0及以下查看前台包应用包名
    adb shell dumpsys activity | find "mFocusedActivity"
    
    #Android 8.0以上 dumpsys activity 的信息已经有变化,用此命令进行查看包名
    adb shell dumpsys activity | find "mResumedActivity"
    

    例子

    在这里插入图片描述

三、android系统日志文件

1.logcat日志文件

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

  • 使用方式

    • adb logcat [<option>] … [<fiter-spec>]…
  • 开发者选项,有个选项叫做 “日志记录器缓冲区大小” 默认是256K,日志是循环写入环形缓冲区的。在通常情况下,写满时最旧的们志会被删除以给新输出的日志留内存空间——真机设置,模拟器一般没有

    在这里插入图片描述

    在这里插入图片描述

2.logcat日志文件分析

  • 输出的日志格式如下所示:

    在这里插入图片描述

  • 由五部分组成:

    • 1.写下日志时的时间,如图中 12-02 23:02:31.289。

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

      • V——Verbose(最低级别,开发调试中的一些详细信息,仅在开发中使用,不可在发布产品中输出)
      • D——Debug(调试,用于调试的信息,可以在发布产品中关闭,比较常见)
      • I——Info(信息,一般提示性的消息)
      • W——Warning(警告))
      • E——Error(错误,已经出现可影响运行的错误,比如应用crash时输出的日志)
    • 3.标签(tag),标明日志发起者和方便日志的过滤筛选,如图中MiuiNetworkPolicy,类和模块

    • 4.PID(进程ID),如图中1591

    • 5.正文:本日志的主体内容

四、分析crash & ANR 日志

1.发生crash如何分析

在这里插入图片描述

  • 发生crash,adb logcat获取日志分析:
    • 1.搜索exception关键字,根据时间,包名定位
    • 2.搜索fatal / caused by关键字
    • 3.搜索force finish

找到对应的日志,贴到bug里,发给开发! ! !

2.发生ANR如何分析

在这里插入图片描述

何为ANR

ANR全名Application Not Responding,也就是应用无响应,当操作在一段时间内系统无法处理时,系统层面会弹出如图所示那样的ANR对话框

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

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

  • 系统发生ANR时,会通过三种方式记录信息:

    • 1.Logcat日志(通过Logcat日志进行分析)
      • 日志格式
        • ActivityManager:ANR in [进程名] ([部件名])
        • ActivityManager:PID:[应用进程ID]
        • ActivityManager:Reason:[原因提示] [Process CPU state]
        • 通过搜索anr关键字,若无具体java报错信息,继续另一种方法获取日志
        • 通过logcat日志文件搜索ANR查看的日志信息,只能辅助定位问题。无法具体知道因为什么原因导致的
    • 2.Trace文件(通过Trace文件进行分析)
      • 文件路径:/data/anr/
      • Dump stack trace信息
      • Dump 的进程包括:当前应用进程,父进程,主进程,persistent进程,以及CPU占用率排在前几位的(最多5个)进程
      • ps:只能记录最后一次发生的anr的信息
    • 3.DropBox服务
      • 通过dropbox可以收集系统一段时间内的异常信息(包括ANR、crash)
      • /data/system/dropbox是dropbox指定的文件存放位置

总结

以上都是基于Android实现的

扩展(IOS app定位日志)

  • MacOS电脑:xcode工具 —— 一出现问题,把手机直接给ios开发
  • Windows:iTunes、iTools
  • 使用工具将日志同步到电脑,然后贴到bug你给开发!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/193621.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

前端组件库开发

通常我们会使用很多组件库&#xff0c;有时候我们会去看源码比如element&#xff0c;antd&#xff0c;然后发现多少是按需导出&#xff0c;和vue.use全局注册&#xff0c;依赖于框架的拓展。 组件库的开发依赖框架的版本和node的版本&#xff0c;这个是需要说明的&#xff0c;然…

【阅读论文】时间序列异常检测:综合评价

文章目录 摘要1 异常检测范围2 时间序列和异常3 异常检测技术3.1预测方法3.2重建方法3.3编码方法3.4距离方法3.5分布方法3.6隔离树方法 4 实验评估4.1环境和设置4.2结果质量4.3运行时和内存 5 讨论致谢参考文献 摘要 在金融应用中&#xff0c;检测时间序列数据中的异常子序列是…

ubuntu下QT搭建Android开发环境

一、前言 用QT开发android和直接使用android开发的区别 使用Qt开发Android应用和直接使用Android开发工具&#xff08;例如Android Studio&#xff09;有一些区别&#xff0c;主要体现在开发工具、语言、界面设计和性能等方面&#xff1a; 开发工具&#xff1a; Qt Creat…

Python----字典练习

相关链接&#xff1a;Python---字典的增、删、改、查操作_python中字典的增删改查-CSDN博客 Python---字典---dict-CSDN博客 Python---引用变量与可变、非可变类型-CSDN博客 重点&#xff1a; 字典中的 key &#xff08;就是键&#xff09;可以是很多数据类型&#xff08;…

Java线程池的使用和最佳实践

第1章&#xff1a;引言 处理并发问题时&#xff0c;如果每次都新建线程&#xff0c;那系统的压力得有多大&#xff1f;这时候&#xff0c;线程池就像一个英雄一样出现了&#xff0c;它帮我们有效地管理线程&#xff0c;提高资源利用率&#xff0c;降低开销。那么&#xff0c;为…

代理模式介绍(静态代理、jdk动态代理、cglib代理)

一、静态代理 &#xff08;一&#xff09;定义 1、定义 为其他对象提供一种代理以控制对这个对象的访问&#xff1b; 2、涉及到的角色 &#xff08;1&#xff09;抽象主题角色&#xff1a;真实主题和代理主题的共同接口&#xff0c;便于在使用真实主题的地方都可以使用代理…

鸿蒙开发笔记

最近比较火&#xff0c;本身也是做前端的&#xff0c;就抽空学习了下。对前端很友好 原视频地址&#xff1a;黑马b站鸿蒙OS视频 下载安装跟着视频或者文档就可以了。如果你电脑上安装的有node&#xff0c;但是开发工具显示你没安装&#xff0c;不用动咱们的node&#xff0c;直…

红队攻防实战之Access注入

若盛世将倾&#xff0c;深渊在侧&#xff0c;我辈当万死以赴 访问漏洞url: 1.Access联合查询 判断是否有注入 and 11正常&#xff0c;and 12出错 判断字段数 order by 7正常 order by 8出错 爆破出表名并判断回显点为2&#xff0c;5 查看字段内容&#xff0c;将字段名填入回…

12月1号作业

实现运算符重载 #include <iostream>using namespace std; class Person{friend const Person operator-(const Person &L,const Person &R);friend bool operator<(const Person &L,const Person &R);friend Person operator-(Person &L,const …

WakaTime一个用于跟踪和分析编程时间的工具

WakaTime是一个用于跟踪和分析编程时间的工具&#xff0c;它可以集成到各种代码编辑器和集成开发环境中&#xff0c;例如Visual Studio Code、Sublime Text、PyCharm等。它可以帮助开发人员了解他们花费在不同项目和编程语言上的时间&#xff0c;以及他们的编码习惯和生产力。 …

【面试HOT200】二叉树——广度优先搜索篇

系列综述&#xff1a; &#x1f49e;目的&#xff1a;本系列是个人整理为了秋招面试的&#xff0c;整理期间苛求每个知识点&#xff0c;平衡理解简易度与深入程度。 &#x1f970;来源&#xff1a;材料主要源于【CodeTopHot200】进行的&#xff0c;每个知识点的修正和深入主要参…

SpringSecurity工作原理

实现功能就是继承这几个对应功能的类。 大概工作流程 Spring Security 的过滤器&#xff08;Filters&#xff09;和拦截器&#xff08;Interceptors&#xff09;是 Spring Security 框架中用于保护 web 应用安全的重要组件。它们在处理 HTTP 请求时扮演不同的角色&#xff0c…

uni-app一些目录结构、方法、生命周期、打包、微信小程序登录与支付

1、关于uniapp的目录结构 跟普通vue项目目录结构差不多&#xff0c;多了几个核心文件&#xff0c;manifest.json是配置应用名称、appid、logo、版本等打包信息用的&#xff0c;pages.json的作用是配置页面路径、页面窗口样式、tabBar、navigationBar等页面类信息 2、页面适配方…

【Node.js】笔记梳理 8 - API和JWT

写在最前&#xff1a;跟着视频学习只是为了在新手期快速入门。想要学习全面、进阶的知识&#xff0c;需要格外注重实战和官方技术文档&#xff0c;文档建议作为手册使用 系列文章 【Node.js】笔记整理 1 - 基础知识【Node.js】笔记整理 2 - 常用模块【Node.js】笔记整理 3 - n…

12月03日,每日信息差/菲律宾发生7.4级强震后共录得955次余震/腾讯惩处超 400 万个 QQ 号:这三大行为零容忍

_灵感 ​ &#x1f396; 中国联通&#xff1a;选举陈忠岳为公司董事长 &#x1f384; 菲律宾发生7.4级强震后共录得955次余震 &#x1f30d; 京沪高铁二线“收官段”尘埃落定&#xff1a;潍宿高铁初步设计正式获批 &#x1f30b; 我国燃料电池汽车产业进入提速关键期 &#…

树与二叉树堆:经典OJ题集(2)

目录 二叉树的性质及其问题&#xff1a; 二叉树的性质 问题&#xff1a; 一、对称的二叉树&#xff1a; 题目&#xff1a; 解题思路&#xff1a; 二、另一棵树&#xff1a; 题目&#xff1a; 解题思路&#xff1a; 三、翻转二叉树&#xff1a; 题目&#xff1a;…

synchronized和volatile的区别是什么?

synchronized和volatile是Java中的两个关键词&#xff0c;分别用于实现线程同步和线程间的可见性。 synchronized用于实现线程之间的互斥同步&#xff0c;即同一时刻只能有一个线程访问被synchronized修饰的代码块或方法&#xff0c;其他线程需要等待。synchronized确保了线程…

非功能关键知识总结(一)

文章目录 一、稳定性(一)、服务级别协议1、SLA2、OLA3、UC (二)、可用性指标(三)、突发事件等级 三、质量(一)、千行代码缺陷数量(二)、软件质量模型的发展(三)、产品质量模型 四、安全(一)、网络安全 五、灾备(一)、灾备指标(二)、灾难恢复等级(三)、容灾技术分类 一、稳定性 …

一次电气——电抗器(一)

我之前的工作是在国外建联合循环电厂&#xff0c;现在的工作是研发一次电力设备。虽然仍是在电力行业发展&#xff0c;但这两份不同岗位不同职能的工作究其感受而言有很大的不同。相较于第一份工作&#xff0c;第二份工作带给我带来的更多的是一种由广及微&#xff0c;由浅入深…