adb logcat 常用命令

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级别来过滤。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值