文章目录
- 前言
- 一、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你给开发!



















