当前位置: 首页 > news >正文

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你给开发!

相关文章:

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如何分析 总结扩展&am…...

【Java面试——并发基础、并发关键字】

3.1 并发基础 Java 并发 - 理论基础Java 并发 - 线程基础 多线程的出现是要解决什么问题的? 本质什么? CPU、内存、I/O 设备的速度是有极大差异的&#xff0c;为了合理利用 CPU 的高性能&#xff0c;平衡这三者的速度差异&#xff0c;计算机体系结构、操作系统、编译程序都…...

如何使用 Java 在Excel中创建下拉列表

下拉列表&#xff08;下拉框&#xff09;可以确保用户仅从预先给定的选项中进行选择&#xff0c;这样不仅能减少数据输入错误&#xff0c;还能节省时间提高效率。在MS Excel中&#xff0c;我们可以通过 “数据验证” 提供的选项来创建下拉列表&#xff0c;但如果要在Java程序中…...

Python安装步骤介绍

本文将介绍Python安装的详细步骤如下&#xff1a; 下载 python安装 python配置环境变量&#xff08;安装时勾选配置环境变量的则无需此步骤&#xff09; 一、python下载 官网&#xff1a;Download Python | Python.org 根据电脑位数下载所需的版本 二、Python安装 1.打开安…...

学习80min快速了解大型语言模型(ChatGPT使用)笔记

学习李宏毅&#xff1a;80min快速了解大型语言模型&#xff08;ChatGPT使用&#xff09;笔记 链接&#xff1a;https://www.youtube.com/watch?vwG8-IUtqu-s 1、创建一个属于自己的GPT 目前&#xff0c;GPT4具备一个功能&#xff0c;Create a GPT。利用这个功能可以创建一个…...

SQL错题集1

1.找出选修课程成绩最差的选课记录 注&#xff1a; 聚合函数只能用在group by和&#xff08;&#xff09;括号中 找最值可用排序order bylimit 1 2. 查询选修成绩 合格的课程 超过2门的 学生编号 3.删除姓名为"LiMing"的学生信息 注&#xff1a; 删除一整行信息&…...

uniapp运行到安卓基座app/img标签不显示

img是html中的标签&#xff0c;他也是一个单标签 image属于服务器控件&#xff0c;是个双标签 问题&#xff1a;uniapp运行到app安卓基座后图片无法显示 原因&#xff1a;自己使用了img标签&#xff0c;而且输入路径无提示&#xff0c;img标签导致图片不显示 解决&#xff…...

vscode非常好用的扩展插件

1、Code Spell Checker&#xff1a; 帮助我们检查单词是否拼写错误&#xff0c;检查规则遵循驼峰拼写法。 2、Color Highlight&#xff1a;高亮显示颜色值 3、Svg Preview&#xff1a; 实时预览svg图片&#xff08;修改width、height、fill等值来实时查看效果&#xff09; 4、…...

一文弄懂BFS【广度优先搜索(Breadth-First Search)】

BFS&#xff0c;全名为广度优先搜索(Breadth-First Search)&#xff0c;是一种用于图或树的遍历或搜索的算法。它的主要思想是由节点自身开始向它的邻居节点新进展开搜索&#xff0c;因此也常被形象地称为“层序遍历”。 BFS 基本思想 BFS 工作原理是&#xff0c;从开始节点开…...

深度学习记录--logistic回归函数的计算图

计算图用于logistic回归函数 先回顾一下单一样本的logistic回归损失函数的公式&#xff0c;公式如下&#xff1a; 将logistic函数用计算图表示出来(以两个基础量为例)&#xff0c;计算图如下&#xff1a; 前向传播已经完成&#xff0c;接下来完成后向传播 运用链式法则依次求…...

Java基本数据类型详解

✨个人主页&#xff1a;全栈程序猿的CSDN博客 &#x1f4a8;系列专栏&#xff1a;Java从入门到精通 ✌座右铭&#xff1a;编码如诗&#xff0c;Bug似流星&#xff0c;持续追求优雅的代码&#xff0c;解决问题如同星辰般自如 Java是一种强类型语言&#xff0c;数据类型在程序中起…...

第十五届蓝桥杯模拟赛(第二期)

大家好&#xff0c;我是晴天学长&#xff0c;本次分享&#xff0c;制作不易&#xff0c;本次题解只用于学习用途&#xff0c;如果有考试需要的小伙伴请考完试再来看题解进行学习&#xff0c;需要的小伙伴可以点赞关注评论一波哦&#xff01;后续会继续更新第三期的。&#x1f4…...

命令模式-C++实现

命令模式是一种行为型设计模式&#xff0c;它将请求封装成一个对象&#xff0c;从而能使你可以用不同的请求对客户端进行参数化。该模式允许请求的发送者和接收者进行解耦&#xff0c;发送者不需要知道接收者的信息&#xff0c;只需要通过命令对象来与它进行交互。 命令模式有…...

3dMax拼图生成工具Puzzle2D使用教程

Puzzle2D for 3dsMax拼图生成工具使用教程 Puzzle2D简介&#xff1a; 2D拼图随机生成器&#xff08;英文&#xff1a;Puzzle2D&#xff09; &#xff0c;是一款由#沐风课堂#用MAXScript脚本语言开发的3dsMax建模小工具&#xff0c;可以随机创建2D可编辑样条线拼图图形。可批量…...

git报错invalid object xxx和unable to read tree xxxxxx

电脑出问题了&#xff0c;导致git仓库像是被损坏了一样&#xff0c;执行git status就会报错unable to read ree&#xff0c;无法正常提交代码至仓库&#xff0c;原因是本地代码仓库.git文件损坏了&#xff0c;无法找到正确的提交历史和路径。 找到了一个解决办法&#xff1a; …...

会泽一村民上山放羊吸烟引发森林火灾,AI科技急需关注

2023年4月&#xff0c;会泽县古城街道厂沟村委会望香台山林中发生了一场由疏忽引发的森林火灾。张某某在放羊时未完全熄灭烟头&#xff0c;导致7.33公顷的林地和草地被焚毁&#xff0c;直接经济损失高达29.097万元。这一事件再次凸显了日常生活中的安全隐患。 在这一背景下&…...

docker-compose部署zabbix+grafana

1.引言 1.1目的 zabbixgrafana实现图形化监控 2.部署环境 服务器ip服务版本192.168.5.137zabbix-server6.0.21192.168.5.137grafana10.2.2192.168.5.152zabbix-client6.0.21 3.部署zabbix-server 3.1 创建zabbix目录 mkdir zabbix3.2 编写docker-compose文件 cd zabbix…...

ios 逆向分分析,某业帮逆向算法(二)

接上讲 上次hook 发现自己的数据有点问题。才发现是自己的编辑器识别出问题了。 上篇sub_1029B6898函数hook数据如下: [iOS Device::作业帮 ]-> arg2: 0 1 2 3 4 5 6 7 8 9 A B C D E F 0123456789ABCDEF 00000000 37 32 65 64 38 31 32 38…...

openCv颜色矩

颜色矩&#xff08;Color Moments&#xff09;是一种常用的图像特征描述方法&#xff0c;用于表示图像中颜色的分布和统计特征。它是基于图像的颜色直方图而计算得到的。 颜色矩通常包括三个维度&#xff1a;平均值、方差和偏度。具体来说&#xff1a; 平均值&#xff08;Mean…...

〖大前端 - 基础入门三大核心之JS篇㊹〗- DOM事件委托

说明&#xff1a;该文属于 大前端全栈架构白宝书专栏&#xff0c;目前阶段免费&#xff0c;如需要项目实战或者是体系化资源&#xff0c;文末名片加V&#xff01;作者&#xff1a;不渴望力量的哈士奇(哈哥)&#xff0c;十余年工作经验, 从事过全栈研发、产品经理等工作&#xf…...

TRS收益互换:跨境资本流动的金融创新工具与系统化解决方案

一、TRS收益互换的本质与业务逻辑 &#xff08;一&#xff09;概念解析 TRS&#xff08;Total Return Swap&#xff09;收益互换是一种金融衍生工具&#xff0c;指交易双方约定在未来一定期限内&#xff0c;基于特定资产或指数的表现进行现金流交换的协议。其核心特征包括&am…...

使用 SymPy 进行向量和矩阵的高级操作

在科学计算和工程领域&#xff0c;向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能&#xff0c;能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作&#xff0c;并通过具体…...

OPENCV形态学基础之二腐蚀

一.腐蚀的原理 (图1) 数学表达式&#xff1a;dst(x,y) erode(src(x,y)) min(x,y)src(xx,yy) 腐蚀也是图像形态学的基本功能之一&#xff0c;腐蚀跟膨胀属于反向操作&#xff0c;膨胀是把图像图像变大&#xff0c;而腐蚀就是把图像变小。腐蚀后的图像变小变暗淡。 腐蚀…...

python报错No module named ‘tensorflow.keras‘

是由于不同版本的tensorflow下的keras所在的路径不同&#xff0c;结合所安装的tensorflow的目录结构修改from语句即可。 原语句&#xff1a; from tensorflow.keras.layers import Conv1D, MaxPooling1D, LSTM, Dense 修改后&#xff1a; from tensorflow.python.keras.lay…...

Selenium常用函数介绍

目录 一&#xff0c;元素定位 1.1 cssSeector 1.2 xpath 二&#xff0c;操作测试对象 三&#xff0c;窗口 3.1 案例 3.2 窗口切换 3.3 窗口大小 3.4 屏幕截图 3.5 关闭窗口 四&#xff0c;弹窗 五&#xff0c;等待 六&#xff0c;导航 七&#xff0c;文件上传 …...

LOOI机器人的技术实现解析:从手势识别到边缘检测

LOOI机器人作为一款创新的AI硬件产品&#xff0c;通过将智能手机转变为具有情感交互能力的桌面机器人&#xff0c;展示了前沿AI技术与传统硬件设计的完美结合。作为AI与玩具领域的专家&#xff0c;我将全面解析LOOI的技术实现架构&#xff0c;特别是其手势识别、物体识别和环境…...

《信号与系统》第 6 章 信号与系统的时域和频域特性

目录 6.0 引言 6.1 傅里叶变换的模和相位表示 6.2 线性时不变系统频率响应的模和相位表示 6.2.1 线性与非线性相位 6.2.2 群时延 6.2.3 对数模和相位图 6.3 理想频率选择性滤波器的时域特性 6.4 非理想滤波器的时域和频域特性讨论 6.5 一阶与二阶连续时间系统 6.5.1 …...

C# winform教程(二)----checkbox

一、作用 提供一个用户选择或者不选的状态&#xff0c;这是一个可以多选的控件。 二、属性 其实功能大差不差&#xff0c;除了特殊的几个外&#xff0c;与button基本相同&#xff0c;所有说几个独有的 checkbox属性 名称内容含义appearance控件外观可以变成按钮形状checkali…...

CppCon 2015 学习:REFLECTION TECHNIQUES IN C++

关于 Reflection&#xff08;反射&#xff09; 这个概念&#xff0c;总结一下&#xff1a; Reflection&#xff08;反射&#xff09;是什么&#xff1f; 反射是对类型的自我检查能力&#xff08;Introspection&#xff09; 可以查看类的成员变量、成员函数等信息。反射允许枚…...

RKNN开发环境搭建2-RKNN Model Zoo 环境搭建

目录 1.简介2.环境搭建2.1 启动 docker 环境2.2 安装依赖工具2.3 下载 RKNN Model Zoo2.4 RKNN模型转化2.5编译C++1.简介 RKNN Model Zoo基于 RKNPU SDK 工具链开发, 提供了目前主流算法的部署例程. 例程包含导出RKNN模型, 使用 Python API, CAPI 推理 RKNN 模型的流程.   本…...