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测试收集手机日志常用的工具
-
ADT
收集开发人员使用最多的开发工具,也是可以实现从pc端获取手机端的文件
-
SDK
收集开发人员使用最多的开发工具,也是可以实现从pc端获取手机端的文件
-
ADB
测试人员最常用的工具,通过pc端收集手机端的文件
2.adb下载与安装
- adb下载与安装:https://blog.csdn.net/weixin_44904239/article/details/134733985
3.ADT/SDK/ADB是什么
-
ADTADT(Android development tools)——Android开发工具。在Eclipse上调用各种与android有关的插件,便要ADT。
-
SDKSDK(software development kit)——软件开发工具包。要用到各种android平台,好比android2.3等,便要有SDK
-
ADBADB(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设备
- adb是android sdk里的一个工具,用这个工具可以直接操作管理android模拟器或者真实的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查看的日志信息,只能辅助定位问题。无法具体知道因为什么原因导致的
- ActivityManager:ANR in [
- 日志格式
- 2.Trace文件(通过Trace文件进行分析)
- 文件路径:/data/anr/
- Dump stack trace信息
- Dump 的进程包括:当前应用进程,父进程,主进程,persistent进程,以及CPU占用率排在前几位的(最多5个)进程
- ps:只能记录最后一次发生的anr的信息
- 3.DropBox服务
- 通过dropbox可以收集系统一段时间内的异常信息(包括ANR、crash)
- /data/system/dropbox是dropbox指定的文件存放位置
- 1.Logcat日志(通过Logcat日志进行分析)
总结
以上都是基于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 设备的速度是有极大差异的,为了合理利用 CPU 的高性能,平衡这三者的速度差异,计算机体系结构、操作系统、编译程序都…...
如何使用 Java 在Excel中创建下拉列表
下拉列表(下拉框)可以确保用户仅从预先给定的选项中进行选择,这样不仅能减少数据输入错误,还能节省时间提高效率。在MS Excel中,我们可以通过 “数据验证” 提供的选项来创建下拉列表,但如果要在Java程序中…...
Python安装步骤介绍
本文将介绍Python安装的详细步骤如下: 下载 python安装 python配置环境变量(安装时勾选配置环境变量的则无需此步骤) 一、python下载 官网:Download Python | Python.org 根据电脑位数下载所需的版本 二、Python安装 1.打开安…...
学习80min快速了解大型语言模型(ChatGPT使用)笔记
学习李宏毅:80min快速了解大型语言模型(ChatGPT使用)笔记 链接:https://www.youtube.com/watch?vwG8-IUtqu-s 1、创建一个属于自己的GPT 目前,GPT4具备一个功能,Create a GPT。利用这个功能可以创建一个…...
SQL错题集1
1.找出选修课程成绩最差的选课记录 注: 聚合函数只能用在group by和()括号中 找最值可用排序order bylimit 1 2. 查询选修成绩 合格的课程 超过2门的 学生编号 3.删除姓名为"LiMing"的学生信息 注: 删除一整行信息&…...
uniapp运行到安卓基座app/img标签不显示
img是html中的标签,他也是一个单标签 image属于服务器控件,是个双标签 问题:uniapp运行到app安卓基座后图片无法显示 原因:自己使用了img标签,而且输入路径无提示,img标签导致图片不显示 解决ÿ…...
vscode非常好用的扩展插件
1、Code Spell Checker: 帮助我们检查单词是否拼写错误,检查规则遵循驼峰拼写法。 2、Color Highlight:高亮显示颜色值 3、Svg Preview: 实时预览svg图片(修改width、height、fill等值来实时查看效果) 4、…...
一文弄懂BFS【广度优先搜索(Breadth-First Search)】
BFS,全名为广度优先搜索(Breadth-First Search),是一种用于图或树的遍历或搜索的算法。它的主要思想是由节点自身开始向它的邻居节点新进展开搜索,因此也常被形象地称为“层序遍历”。 BFS 基本思想 BFS 工作原理是,从开始节点开…...
深度学习记录--logistic回归函数的计算图
计算图用于logistic回归函数 先回顾一下单一样本的logistic回归损失函数的公式,公式如下: 将logistic函数用计算图表示出来(以两个基础量为例),计算图如下: 前向传播已经完成,接下来完成后向传播 运用链式法则依次求…...
Java基本数据类型详解
✨个人主页:全栈程序猿的CSDN博客 💨系列专栏:Java从入门到精通 ✌座右铭:编码如诗,Bug似流星,持续追求优雅的代码,解决问题如同星辰般自如 Java是一种强类型语言,数据类型在程序中起…...
第十五届蓝桥杯模拟赛(第二期)
大家好,我是晴天学长,本次分享,制作不易,本次题解只用于学习用途,如果有考试需要的小伙伴请考完试再来看题解进行学习,需要的小伙伴可以点赞关注评论一波哦!后续会继续更新第三期的。Ǵ…...
命令模式-C++实现
命令模式是一种行为型设计模式,它将请求封装成一个对象,从而能使你可以用不同的请求对客户端进行参数化。该模式允许请求的发送者和接收者进行解耦,发送者不需要知道接收者的信息,只需要通过命令对象来与它进行交互。 命令模式有…...
3dMax拼图生成工具Puzzle2D使用教程
Puzzle2D for 3dsMax拼图生成工具使用教程 Puzzle2D简介: 2D拼图随机生成器(英文:Puzzle2D) ,是一款由#沐风课堂#用MAXScript脚本语言开发的3dsMax建模小工具,可以随机创建2D可编辑样条线拼图图形。可批量…...
git报错invalid object xxx和unable to read tree xxxxxx
电脑出问题了,导致git仓库像是被损坏了一样,执行git status就会报错unable to read ree,无法正常提交代码至仓库,原因是本地代码仓库.git文件损坏了,无法找到正确的提交历史和路径。 找到了一个解决办法: …...
会泽一村民上山放羊吸烟引发森林火灾,AI科技急需关注
2023年4月,会泽县古城街道厂沟村委会望香台山林中发生了一场由疏忽引发的森林火灾。张某某在放羊时未完全熄灭烟头,导致7.33公顷的林地和草地被焚毁,直接经济损失高达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颜色矩
颜色矩(Color Moments)是一种常用的图像特征描述方法,用于表示图像中颜色的分布和统计特征。它是基于图像的颜色直方图而计算得到的。 颜色矩通常包括三个维度:平均值、方差和偏度。具体来说: 平均值(Mean…...
〖大前端 - 基础入门三大核心之JS篇㊹〗- DOM事件委托
说明:该文属于 大前端全栈架构白宝书专栏,目前阶段免费,如需要项目实战或者是体系化资源,文末名片加V!作者:不渴望力量的哈士奇(哈哥),十余年工作经验, 从事过全栈研发、产品经理等工作…...
[特殊字符] 智能合约中的数据是如何在区块链中保持一致的?
🧠 智能合约中的数据是如何在区块链中保持一致的? 为什么所有区块链节点都能得出相同结果?合约调用这么复杂,状态真能保持一致吗?本篇带你从底层视角理解“状态一致性”的真相。 一、智能合约的数据存储在哪里…...
基于ASP.NET+ SQL Server实现(Web)医院信息管理系统
医院信息管理系统 1. 课程设计内容 在 visual studio 2017 平台上,开发一个“医院信息管理系统”Web 程序。 2. 课程设计目的 综合运用 c#.net 知识,在 vs 2017 平台上,进行 ASP.NET 应用程序和简易网站的开发;初步熟悉开发一…...
如何在最短时间内提升打ctf(web)的水平?
刚刚刷完2遍 bugku 的 web 题,前来答题。 每个人对刷题理解是不同,有的人是看了writeup就等于刷了,有的人是收藏了writeup就等于刷了,有的人是跟着writeup做了一遍就等于刷了,还有的人是独立思考做了一遍就等于刷了。…...
return this;返回的是谁
一个审批系统的示例来演示责任链模式的实现。假设公司需要处理不同金额的采购申请,不同级别的经理有不同的审批权限: // 抽象处理者:审批者 abstract class Approver {protected Approver successor; // 下一个处理者// 设置下一个处理者pub…...
AGain DB和倍数增益的关系
我在设置一款索尼CMOS芯片时,Again增益0db变化为6DB,画面的变化只有2倍DN的增益,比如10变为20。 这与dB和线性增益的关系以及传感器处理流程有关。以下是具体原因分析: 1. dB与线性增益的换算关系 6dB对应的理论线性增益应为&…...
【p2p、分布式,区块链笔记 MESH】Bluetooth蓝牙通信 BLE Mesh协议的拓扑结构 定向转发机制
目录 节点的功能承载层(GATT/Adv)局限性: 拓扑关系定向转发机制定向转发意义 CG 节点的功能 节点的功能由节点支持的特性和功能决定。所有节点都能够发送和接收网格消息。节点还可以选择支持一个或多个附加功能,如 Configuration …...
Element-Plus:popconfirm与tooltip一起使用不生效?
你们好,我是金金金。 场景 我正在使用Element-plus组件库当中的el-popconfirm和el-tooltip,产品要求是两个需要结合一起使用,也就是鼠标悬浮上去有提示文字,并且点击之后需要出现气泡确认框 代码 <el-popconfirm title"是…...
以太网PHY布局布线指南
1. 简介 对于以太网布局布线遵循以下准则很重要,因为这将有助于减少信号发射,最大程度地减少噪声,确保器件作用,最大程度地减少泄漏并提高信号质量。 2. PHY设计准则 2.1 DRC错误检查 首先检查DRC规则是否设置正确,然…...
docker容器互联
1.docker可以通过网路访问 2.docker允许映射容器内应用的服务端口到本地宿主主机 3.互联机制实现多个容器间通过容器名来快速访问 一 、端口映射实现容器访问 1.从外部访问容器应用 我们先把之前的删掉吧(如果不删的话,容器就提不起来,因…...
scan_mode设计原则
scan_mode设计原则 在进行mtp controller设计时,基本功能设计完成后,需要设计scan_mode设计。 1、在进行scan_mode设计时,需要保证mtp处于standby模式,不会有擦写、编程动作。 2、只需要固定mtp datasheet说明的接口即可…...
