[app]adb调试以及log获取分析
今天终于在工作中用到了adb,忘了一大半,多亏有之前的手写笔记和广大的网友
记录一下我遇到的问题和操作流程
前提条件:电脑安装好了adb工具,也已配置好环境变量
1、adb连接真机
手机进入开发者模式,允许usb调试
插线连接电脑,进入cmd命令行界面,输入adb devices
如果连接正常出现的是设备 后边跟devices
但是我的一直是unauthorized(未授权)
在网上找了半天,几乎试了所有方法,终于有一种对我有用,,,,
总结一下网上大家提到的一些方法
1.1 撤销USB调试授权
拔掉数据线,点击手机开发者模式里边的撤销usb调试授权,再插线连接
对我无用,,
1.2 重启adb服务
首先拔掉数据线!进入cmd命令行界面
先adb kill-server
再adb start-server
重新插数据线,连接电脑
这种方法对很多人好像都适用,但是对我依旧无用,,
1.3 在.android文件夹下的adb_usb.ini文件添加设备id
.android文件一般是在C盘-users-Administrator或者其他用户文件夹下的
我就进去了这个文件,可是我根本就没有adb_usb.ini这个东西啊!!头疼!
然后我又看到有人说没有的话就新建一个
我就新增了一个adb_usb.ini,后缀名是.ini
设备id怎么来呢
右键我的电脑--属性--设备管理器

选择你的设备,双击

点击详细信息,属性选择硬件id
然后将0x12D1放进adb_usb.ini文件中(设备id前边都要加上0x)

然后重启adb,插拔数据线
很遗憾依旧对我没用!!!
之后又重启了电脑和手机无数次,,还是没用,,
1.4 删除.android文件夹下的adbkey和adbkey.pub
我又进入到.android文件夹,发现我只有adbkey,不管了,实在是没啥办法了,就删掉了adbkey文件,重启adb,插拔数据线!!
然后这时候,奇迹出现了!!!
手机终于弹出了下图这个!!
一定要是带RSA密钥的!!!勾选框框,点确定,输入adb devices,终于unauthorized变成device了,感天动地

我主要是卡在这一步了,只要连接上了,后边的都是常规操作了
2、抓取log文件
基本格式:adb logcat
常用命令:
adb logcat -v time #打印的日志包含时间
adb logcat -v time >D:\test.log #将打印的文件保存在D盘test.log文件中
adb kill-sever #关闭adb服务
adb start-sever #开启adb服务
adb logcat -v time *:E #打印级别为error的日志信息
adb logcat -help #打印adb帮助手册
3、log日志分析
3.1 logcat缓冲区
Radio:输入通信系统的log
System:输出系统组件的log
Events:输出event模块的log
Main:所有java层的log
3.2 日志组成部分
一般是由优先级:priority和标签tag(日志发起者)组成
priority:
V —— Verbose(最低,输出得最多)
D —— Debug 调试
I —— Info 信息
W —— Warning 警告
E —— Error 错误
F —— Fatal
S —— Silent(最高,啥也不输出)
3.3 logcat参数说明
--"-s"选项 : 设置输出日志*:s的标签, 只显示该标签的日志;
--"-f"选项 : 将日志输出到文件, 默认输出到标准输出流中, -f 参数执行不成功;
--"-r"选项 : 按照每千字节输出日志, 需要 -f 参数, 不过这个命令没有执行成功;
--"-n"选项 : 设置日志输出的最大数目, 需要 -r 参数, 这个执行 感觉 跟 adb logcat 效果一样;
--"-v"选项 : 设置日志的输出格式, 注意只能设置一项;
--"-c"选项 : 清空所有的日志缓存信息;
--"-d"选项 : 将缓存的日志输出到屏幕上, 并且不会阻塞;
--"-t"选项 : 输出最近的几行日志, 输出完退出, 不阻塞;
--"-g"选项 : 查看日志缓冲区信息;
--"-B"选项 : 以二进制形式输出日志;
一般来说,比较常用的为-v和-c
3.3.1 adb logcat -v
- brief
为默认格式,格式如下:
<priority>/<tag>(<pid>): <message>
示例:
D/HeadsetStateMachine( 1785): Disconnected process message: 10, size: 0
- process
格式如下:
<priority>(<pid>) <message>
示例:
D( 1785) Disconnected process message: 10, size: 0 (HeadsetStateMachine)
- tag
格式如下:
<priority>/<tag>: <message>
示例:
D/HeadsetStateMachine: Disconnected process message: 10, size: 0
- raw
格式如下:
<message>
示例:
Disconnected process message: 10, size: 0
- time
格式如下:
<datetime> <priority>/<tag>(<pid>): <message>
示例:
08-28 22:39:39.974 D/HeadsetStateMachine( 1785): Disconnected process message: 10, size: 0
- threadtime(线程)
格式如下:
<datetime> <pid> <tid> <priority> <tag>: <message>
示例:
08-28 22:39:39.974 1785 1832 D HeadsetStateMachine: Disconnected process message: 10, size: 0
- long
格式如下:
[ <datetime> <pid>:<tid> <priority>/<tag> ]
示例:
[ 08-28 22:39:39.974 1785: 1832 D/HeadsetStateMachine ] Disconnected process message: 10, size: 0
3.3.2 adb logcat -c
主要用来清除之前的日志缓存记录,没有参数
3.4 崩溃和未响应的日志
3.4.1 crash 崩溃(停止运行)
搜索关键字“fatal exception”,从该行开始一直到E结束即为崩溃日志
3.4.2 ANR(appliation not responding)未响应
搜索关键字“anr in”,从该行开始一直到E结束即为未响应的日志

浙公网安备 33010602011771号