adb logcat 常用命令

    xiaoxiao2021-11-23  43

    logcat 工具在做android开发的过程中肯定是必不可少的,这里介绍几个我认为比较方便的logcat命令。

    三 adb Log过滤:

    1. 只显示需要的输出,白名单 最方便的当然是通过管道使用 grep 过滤了,这样可以使用 grep 强大的正则表达式匹配。简单的匹配一行当中的某个字符串,例如 MyApp: adb logcat | grep MyApp adb logcat | grep -i myapp #忽略大小写。

    2 保存log

    -d              dump the log and then exit (don't block)

    adb logcat -d > logcatdump  将logcat输出保存为名为logcatdump的文件

    使用-d参数,可以在读完所有log后返回,而不会一直等待,在自动化较有用。例如: adb logcat -d -s xxx > xxx.log //得到filter为xxx的日志,存入xxx.log,然后返回。

    adb logcat查看可用日志缓冲区

    adb logcat  -b  <buffer>

    加载一个可使用的日志缓冲区供查看,比如event 和radio . 默认值是main 。具体查看Viewing Alternative Log Buffers.

        Android日志系统有循环缓冲区,并不是所有的日志系统都有默认循环缓冲区。为了得到 日志信息,你需要通过-b 选项来启动logcat 。如果要使用循环缓冲区,你需要查看剩余的 循环缓冲期: 

    radio — radio打出来的log和音频信息相关events —events打出来的log和android中keyevent,motionevent等响应事情有关main — main是默认的选项,应该跟直接adb logcat 效果一样

    例如:

    adb logcat -b events 2>&1 | tee events

    这里有个-b 和 -d 的区别: adb logcat -v time -b radio   // 打印缓冲区内的radio 日志,是时时更新的,只要串口没断 adb logcat -v time -d radio  // 打印从开机到此时的缓冲区内的radio 日志

    struct logger_log {     unsigned char       *buffer;/* the ring buffer itself */     struct miscdevice   misc;   /* misc device representing the log */     wait_queue_head_t   wq; /* wait queue for readers */     struct list_head    readers; /* this log's readers */     struct mutex        mutex;  /* mutex protecting buffer */     size_t          w_off;  /* current write head offset */     size_t          head;   /* new readers start here */     size_t          size;   /* size of the log */ }; 这是android内核中logger总最基本的结构,链表且首尾相连,系统中有4个这样的环形结构分别是main,events,radio,system。     -b 选项使用方法:          [adb] logcat [-b <buffer>]       下面的例子表示怎么查看日志缓冲区包含radio 和 telephony信息:        adb logcat -b radio

    1. adb logcat;

    这个最简化的一个打log的命令,不过默认打出的log信息太少,个人很少用

    2. adb logcat -v time;

    增加加了打印时间信息

    3. adb logcat -v threadtime;

    这个用的最多,不仅打印了时间而且还打印了PID 和 TID,在看log的时候可以通过PID 和 TID 进一步的过滤,比较方便,TID对于调试多线程的ap很方便

    4. adb logcat -v threadtime -b radio;

    有的时候需要看radio的log,可以用这个了。

    5. adb logcat -v threadtime | grep "keyword" ;

    对于只是想看一些关键调试信息的时候,用grep命令实时的查看结果就比较方便了

    6. adb logcat -v threadtime TAG1:v TAG2:v ... *:s ; 如果有多个TAG 标签,keyword不统一,不方便用grep,那么用各自的TAG标签就比较好一些,同时还可以根据log级别来过滤。
    转载请注明原文地址: https://ju.6miu.com/read-678470.html

    最新回复(0)