美文网首页
adb命令备忘录

adb命令备忘录

作者: Alexyz123 | 来源:发表于2020-04-14 12:52 被阅读0次
    清除终端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 日志打印手册

    相关文章

      网友评论

          本文标题:adb命令备忘录

          本文链接:https://www.haomeiwen.com/subject/olsnrhtx.html