ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

adb logcat 命令

2020-06-24 18:37:00  阅读:261  来源: 互联网

标签:输出 logcat log 命令 adb 缓冲区 日志


adb logcat 命令

adb 命令在移动端开发和测试中广泛使用 , 尤其在自动化测试脚本中很常见 .
adb logcat用于输出设备日志,分析错误原因 .
本章主要说明 adb logcat 命令 . 有四部分组成,分别是命令格式, 常用命令 , shell脚本输出指定app日志 ,android系统log缓冲区.


一.命令格式
adb logcat [选项] [过滤项], 其中 选项 和 过滤项 在 中括号 [] 中, 说明这是可选的;
选项解析:
1."-s"选项 : 只显示指定标签的日志; ------>adb logcat -s SWVDEC 显示SWVDEC标签的日志
在这里插入图片描述
2."-v"选项 : 设置日志的输出格式;----->adb logcat -v threadtime 查看日志输出时间和线程信息
3."-c"选项 : 清空所有的日志缓存信息;---->adb logcat -c
4."-d"选项 : 将缓存的日志输出到屏幕上, 并且不会阻塞;------->adb logcat -d
5."-t"选项 : 输出最近的几行日志, 输出完退出, 不阻塞;------>adb logcat -t 5 输出日志缓冲区的最近5行
6."-g"选项 : 查看日志缓冲区信息; ------>adb logcat -g
7."-B"选项 : 以二进制形式输出日志; ----> adb logcat -B


二.常用命令
1.过滤指定等级日志 比如: 显示Error以上级别的日志: adb logcat *:E 常用的还有D (debug以上级别), I (Info以上级别)
2.log输出到计算机文件 adb logcat > /home/cherish/log.txt ( 相对路径.绝对路径都可以.)
3.使用管道过滤日志
过滤指定标签"android"或者"system"标签的log,并输出到文件:
adb logcat | grep -E “android|system” > /home/cherish/log.txt
如下图:
在这里插入图片描述
4.将日志保存到文件 , 但无法输出到屏幕 , 针对这个问题可以采用 tee命令 .
adb logcat | grep -E “android|system” | tee /home/cherish/log.txt
在这里插入图片描述5.给指定标签文字加颜色
比如:adb logcat | grep --color=auto -i android
过滤带有标签"android"的log,并给"android"字样加上颜色 .
在这里插入图片描述6.输出带有某个包名的日志
adb logcat | grep “需要过滤的包名”
在这里插入图片描述注:在windows上不能使用grep关键字,可以用findstr代替grep.

7.adb logcat -help 如果具体命令没记住 , 使用它查看简单的命令格式.


三.shell脚本输出指定app日志
思路: 先通过包名找到该进程的pid, 使用pid进行过滤该应用日志. 代码如下:

#!/bin/bash
packageName=$1

systemVersion="$(adb shell getprop ro.build.version.release)"
echo "systemVersion=$systemVersion"
version=`echo $systemVersion | awk -F '.' '{print $1}'`

ver=`expr $version + 0`  
#android8.0及以上系统获取正在运行的进程pid需要加上-A:  adb shell ps -A
if [ $ver -ge 8 ]; then
   pid="$(adb shell ps -A | grep $packageName | awk '{print $2}')" 
else
   pid="$(adb shell ps | grep $packageName | awk '{print $2}')"
fi

echo "pid=$pid"

echo "-----------------------------"
adb logcat | grep --color=auto $pid

执行脚本命令 ./log.sh 包名
比如 ./log.sh com.android.systemui


四.知识扩展
1.android log系统组成
在这里插入图片描述
2.logcat缓冲区
android系统把log输出到不同的缓冲区中,目前定义了四个log缓冲区 .

  • radio:输出通信系统(无线/电话相关)的log
  • system:输出系统组件的log
  • events:输出事件相关模块的log
  • main:所有java层的log, 也是主缓冲区 (默认缓冲区)
    缓冲区主要给系统组件使用,上层应用不需要关心,应用的log都输出到main缓冲区中
    默认log输出(不指定缓冲区的情况下)是输出System和Main缓冲区的log

3.缓冲区模型
在这里插入图片描述

标签:输出,logcat,log,命令,adb,缓冲区,日志
来源: https://blog.csdn.net/zhaohuih/article/details/106905219

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有