ADB,即 Android Debug Bridge,它是 Android 开发/测试人员不可替代的强大工具,也是 Android 设备玩家的好玩具。

注: 有部分命令的支持情况可能与 Android 系统版本及定制 ROM 的实现有关。

  • [查看日志]
    • [Android 日志]
      • [按级别过滤日志]
      • [按 tag 和级别过滤日志]
      • [日志格式]
      • [清空日志]
    • [内核日志]

查看日志

Android 系统的日志分为两部分,底层的 Linux 内核日志输出到 /proc/kmsg,Android 的日志输出到 /dev/log。

Android 日志

命令格式:

[adb] logcat [

常用用法列举如下:

按级别过滤日志

Android 的日志分为如下几个优先级(priority):

  • V —— Verbose(最低,输出得最多)
  • D —— Debug
  • I —— Info
  • W —— Warning
  • E —— Error
  • F —— Fatal
  • S —— Silent(最高,啥也不输出)

按某级别过滤日志则会将该级别及以上的日志输出。

比如,命令:

adb logcat *:W

会将 Warning、Error、Fatal 和 Silent 日志输出。

注: 在 macOS 下需要给 *:W 这样以 * 作为 tag 的参数加双引号,如 adb logcat "*:W",不然会报错 no matches found: *:W。)

按 tag 和级别过滤日志

可以由多个 [:priority] 组成。

比如,命令:

adb logcat ActivityManager:I MyApp:D *:S

表示输出 tag ActivityManager 的 Info 以上级别日志,输出 tag MyApp 的 Debug 以上级别日志,及其它 tag 的 Silent 级别日志(即屏蔽其它 tag 日志)。

日志格式

可以用 adb logcat -v 选项指定日志输出格式。

日志支持按以下几种

  • brief

    默认格式。格式为:

    /(): 

    示例:

    D/HeadsetStateMachine( 1785): Disconnected process message: 10, size: 0
  • process

    格式为:

    () 

    示例:

    D( 1785) Disconnected process message: 10, size: 0  (HeadsetStateMachine)
  • tag

    格式为:

    /: 

    示例:

    D/HeadsetStateMachine: Disconnected process message: 10, size: 0
  • raw

    格式为:

    示例:

    Disconnected process message: 10, size: 0
  • time

    格式为:

     /(): 

    示例:

    08-28 22:39:39.974 D/HeadsetStateMachine( 1785): Disconnected process message: 10, size: 0
  • threadtime

    格式为:

        : 

    示例:

    08-28 22:39:39.974  1785  1832 D HeadsetStateMachine: Disconnected process message: 10, size: 0
  • long

    格式为:

    [  : / ]

    示例:

    [ 08-28 22:39:39.974  1785: 1832 D/HeadsetStateMachine ]Disconnected process message: 10, size: 0

指定格式可与上面的过滤同时使用。比如:

adb logcat -v long ActivityManager:I *:S

清空日志

adb logcat -c

内核日志

命令:

adb shell dmesg

输出示例:

<6>[14201.684016] PM: noirq resume of devices complete after 0.982 msecs<6>[14201.685525] PM: early resume of devices complete after 0.838 msecs<6>[14201.753642] PM: resume of devices complete after 68.106 msecs<4>[14201.755954] Restarting tasks ... done.<6>[14201.771229] PM: suspend exit 2016-08-28 13:31:32.679217193 UTC<6>[14201.872373] PM: suspend entry 2016-08-28 13:31:32.780363596 UTC<6>[14201.872498] PM: Syncing filesystems ... done.

中括号里的 [14201.684016] 代表内核开始启动后的时间,单位为秒。

通过内核日志我们可以做一些事情,比如衡量内核启动时间,在系统启动完毕后的内核日志里找到 Freeing init memory 那一行前面的时间就是。

更多相关文章

  1. Android(安卓)ApiDemos示例解析(150):Views->Layouts->LinearLay
  2. android中的显示跳转和隐式跳转
  3. Android小案例——简单图片浏览器
  4. OpenCV4Android开发之旅(一)----OpenCV2.4简介及 app通过Java接
  5. github项目解析(五)-->android日志框架
  6. 总结系列-硬件加速
  7. Android中绘制图表解决方案
  8. Android(安卓)开发技巧之Log发送UDP报文,Socket编程
  9. 阅读手札:《:第一行代码》(第一章)

随机推荐

  1. Android Studio Error 安装后Gradle:reso
  2. ViewBinding的简单使用
  3. Android广播接收器BroadcastReceiver——
  4. Android(安卓)四大组件:这是一份全面 & 详
  5. android 传感器的使用
  6. 【Android自学笔记】Android中的Log小技
  7. Android短信发送流程之长短信发送(原)
  8. Android DownloadManager下载进度查询(系
  9. Android 常用的提示框,输入框,弹窗
  10. Android(安卓)添加系统设置属性的实现及