adb命令备忘录

清除终端log缓存:

adb logcat -c -b main -b events -b radio -b system -b crash

adb Bug定位过滤:

1. 查看logcat信息:

adb logcat
adb logcat --help ——> 帮助

grep命令:

用于过滤/搜索的特定字符
grep --help ——> 查看grep帮助

-E ——> 指定字符串做为查找文件内容的样式,一个可扩展的正则表达式;
-r ——> 指定要查找的目录或文件(默认当前目录);
-i ——> 忽略字符大小写;
-v ——> 显示不包含匹配文本的所有行(剔除);
-l ——> 显示符合指定的内容样式的文件名称;
-n ——> 显示行数编号;

grep "tag" ./filename ——> 指定文件
grep "tag" ——> 过滤带有tag的字符串
grep -E "tag1|tag2|..." ——> 过滤带有tag1|tag2|...的字符串
grep -i "tag" ——> 忽略tag大小写
grep -i -E "tag1|tag2|..." ——> 忽略tag1|tag2|...大小写
grep -v "tag" ——> 剔除不符合条件tag的log
grep -v -E "tag1|tag2|..." ——> 剔除不符合条件tag1|tag2|...的log

-r默认当前目录:
grep -r "tag" *
grep -r -E "tag1|tag2|..." *
grep -rni "tag" *
grep -rni -E "tag1|tag2|..." *
grep -rni -E "tag1|tag2|..." * > log.txt
adb logcat | grep MyApp ——> 过滤出带有MyApp字符串的log日志信息
adb logcat | grep -i myapp ——> 忽略字符串大小写
adb logcat -v threadtime | grep -E "tag1|tag2|..." ——> 显示匹配多字符串的log
adb logcat -v threadtime | grep -i -E "tag1|tag2|..." ——> 显示忽略大小写且匹配多字符串的log
adb logcat -v threadtime | grep -v -E "tag1|tag2|..." ——> 剔除不符合条件tag1|tag2|...的log

使用-f,-d,-s,-v,-b格式:

-f ——> 输出日志到到sd卡
-d ——> 一次性输出日志到屏幕上,自动终止返回
-s ——> 设置tag,默认的过滤级别为Silent
-v ——> 设置日志消息的输出格式
-b ——> 查看日志消息的缓冲区

adb logcat -f /sdcard/log.txt ——> 一直写入,退出设备或Ctrl + c终止
adb logcat -d ——> 一次输出日志到屏幕上后终止
adb logcat -v threadtime ——> 打印日期,时间,优先级/标记,PID和TID

得到filter过滤tag为XX的日志信息:——> 匹配tag(-Log.i("XX")-)为XX字符串的日志信息

adb logcat ActivityManager:I WindowManager:D *:S

adb logcat -s ActivityManager:I WindowManager:D

——> 输出标记为"ActivityManager"并且优先级大于等于"Info"和标记为"WindowManager"并且优先级大于等于"Debug"的日志

adb logcat *:w

adb logcat -s *:w ——> 表示显示所有优先级大于等于"warning"的日志

adb logcat -s *:w | grep -E "tag1|tag2|..." ——> 显示匹配多字符串的log

adb logcat -s *:w | grep -i -E "tag1|tag2|..." ——> 忽略大小写,显示匹配多字符串的log

adb logcat -s XX > log.txt ——> 一直输出日志保存在当前系统当前目录下的log.txt文件中
adb logcat -d -s XX > log.txt ——> 一次输出日志在当前系统当前目录下的log.txt文件中后终止

优先级priority从低到高,XX就是以下系列函数中的tag标识:

V — Verbose (lowest priority) 对应于Log.i(tag)系列函数
D — Debug 对应于Log.d()系列函数
I — Info 对应于Log.i()系列函数
W — Warning 对应于Log.w()系列函数
E — Error 对应于Log.e()系列函数
F — Fatal 对应于Log.wtf()系列函数
S — Silent (highest priority, on which nothing is ever printed)

使用-v <format>格式:

[adb] logcat [-v <format>] ——> 启动logcat来控制日志格式,注意只能在-v选项中指定一种格式
例如thread输出格式:adb logcat -v thread

日志消息在标记和优先级之外还有很多元数据字段,这些字段可以通过修改输出格式来控制输出结果,-v选项加上下面列出的内容可以控制输出字段:

brief — 显示优先级/标记和原始进程的PID (默认格式)
process — 仅显示进程PID
tag — 仅显示优先级/标记
thread — 显示优先级/标记,消息线程的PID和TID
raw — 显示原始的日志信息,没有其他的元数据字段
time — 显示日期,调用时间,优先级/标记,PID
threadtime — 显示日期,调用时间,优先级/标记以及发出消息的线程的PID和TID
long — 显示所有的元数据字段并且用空行分隔消息内容

使用-b <buffer>选项格式:

[adb] logcat [-b <buffer>]

主要有:
adb logcat -b crash ——> 查看crash的信息
adb logcat -b main ——> 查看主要的日志缓冲区
adb logcat -b events ——> 查看包含事件相关消息的缓冲区
adb logcat -b system ——> 查看system相关的信息
adb logcat -b radio ——> 查看包含无线装置/电话相关消息的缓冲区

过滤进程$pid的Log:

方法1:
adb shell ps | grep -E "$package_name"
adb logcat -v threadtime | grep -E "$pid"
adb logcat *:W | grep -E "$pid"

方法2:
adb shell ps | grep -E "$package_name"
adb logcat --pid="$pid"

2. 开关Log.isLoggable(LOG_TAG, Log.DEBUG)调试:

adb shell getprop ——> 显示android系统所有配置信息属性
adb shell setprop [key] [value]
adb shell setprop log.tag.YOUR_LOG_TAG [LEVEL]

adb shell setprop log.tag.LOG_TAG DEBUG ——> 开启Log.isLoggable(LOG_TAG, Log.DEBUG)调试
adb shell setprop log.tag.LOG_TAG SUPPRESS ——> 关闭Log.isLoggable(LOG_TAG, Log.DEBUG)调试

3. dumpsys命令:

adb shell dumpsys ——> 显示当前所有系统服务信息
adb shell dumpsys | grep "DUMP OF SERVICE" ——> 帮助
adb shell service list ——> 帮助

查看ActvityManagerService所有信息:
adb shell dumpsys activity ——> 查看ActvityManagerService所有信息
adb shell dumpsys activity package $package_name ——> 查看当前应用ActvityManagerService所有信息
adb shell dumpsys activity activities ——> 查看Activity组件信息
adb shell dumpsys activity top ——> 查看当前界面的UI信息(View Hierarchy)
adb shell dumpsys activity services ——> 查看Service组件信息
adb shell dumpsys activity providers ——> 查看ContentProvider组件信息
adb shell dumpsys activity broadcasts ——> 查看BraodcastReceiver信息
adb shell dumpsys meminfo ——> 查看系统进程内存信息分布情况
adb shell dumpsys meminfo $package_name(进程包名) or $pid(进程id)
adb shell dumpsys package ——> 查看安装包信息
adb shell dumpsys package $package_name ——> 查看当前应用安装包信息

输出系统崩溃的log:
系统应用 ——>
adb shell dumpsys dropbox system_app_crash --print > crash.txt
adb shell dumpsys dropbox system_app_anr --print > anr.txt
第三方应用 ——>
adb shell dumpsys dropbox data_app_crash --print > crash.txt
adb shell dumpsys dropbox data_app_anr --print > anr.txt

4. am命令(ActivityManager):

1、adb shell am -help ——> 帮助
2、am start
-n表示组件;-a表示动作;-d表示传入的数据;-t表示传入的类型

adb shell am start -a android.intent.action.CALL -d tel:10086 ——> 拨打电话;
adb shell am start -n com.android.browser/com.android.browser.BrowserActivity
adb shell am start -n com.android.browser/.BrowserActivity ——> 启动浏览器;
adb shell am start -W com.android.browser/.BrowserActivity ——> 启动Activity时间;
adb shell am start -a android.intent.action.VIEW -d http://www.baidu.com ——> 打开网址;

3、am startservice ——> 启动服务
4、am broadcast -a <广播动作> ——> 发送一个广播

5. pm命令(PackageManager):

1、adb shell pm ——> 帮助
2、adb shell pm list packages ——> 显示所有已安装的包名
3、adb shell pm clear package_name ——> 对指定的package删除所有数据

过滤关键log方法:

grep -r "FATAL EXCEPTION" *
grep -r "Fatal signal" *
grep -r "$package_name" *
grep -r "AndroidRuntime" *
grep -r "Exception" *
grep -r "System.err" *
grep -r "Fatal" *
grep -r "signal" *
grep -r "ANR" *
grep -ri "ANR" *
grep -r "ANR in $package_name" *
grep -r -E "FATAL EXCEPTION|ANR" *
grep -r "am_" *
grep -r "am_killed" *
grep -r "crash" *
grep -r "am_crash" *
grep -r "am_create" *
grep -r "am_finish" *
grep -r "am_destroy" *
grep -rE "am_create|am_destroy" *
grep -r "event" *
grep -ri -E "Notification" *

ADB LOGCAT 日志打印手册

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,921评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,635评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,393评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,836评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,833评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,685评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,043评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,694评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,671评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,670评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,779评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,424评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,027评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,984评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,214评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,108评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,517评论 2 343

推荐阅读更多精彩内容