前言
新买的笔记本E431装了最新版的Eclipse,搞定了Android开发环境,但是logcat里查看东西竟然只显示level,没有错误的详细信息。我本身也不是一个愿意折腾图形界面,更喜欢纯命令行的操作,因此今天在明昊师兄的建议下,果断放弃Eclipse的logcat,投奔adb shell下执行logcat。
adb logcat
Android日志系统提供了logcat命令可以让我们跟踪和查看系统日志缓存区。基本语法如下:
[adb] logcat [<option>]... [<filter-spec>]
可以直接在命令行通过如下命令查看日志输出:
adb logcat
也可以通过adb shell登录到开发机后,直接执行如下命令:
logcat
option选项
我一般使用-s执行tag标签,例如:
高级功能
在rom porting或者其他debug的场合,需要结合过滤功能才能从logcat中获取真正需要的信息,接下来介绍logcat两种过滤实现方法。
过滤
adb logcat提供了附加功能,基于日志优先级来过滤日志。使用语法如下:
adb logcat *:#
其中,#为下列选项之一:
- V 详细,表示所有可能的日志,默认级别
- D 调试,表示所有合理的调试日志
- I 信息,表示正常使用时的日志
- W 警告,表示可能有问题,但是还没发生错误
- E 错误,表示有问题,并且导致错误
所有优先级都自动包含比它高的优先级,例如logcat *:I,包含了信息、警告、错误等信息。因此,当应用崩溃时,更应该集合logcat *:E来查看导致错误的原因,必须费力去查看不着边际的调试日志。
grep
对于adb logcat输出的日志内容,我们还可以结合grep实现进一步的过滤操作。例如,我需要搜索错误报告中包含“wangzhengyi”关键词的日志,可以采用如下命令:
adb logcat *:E | grep -i 'wangzhengyi'