美文网首页
ADB—查看日志

ADB—查看日志

作者: 猿万 | 来源:发表于2018-05-30 16:47 被阅读0次

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

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

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

    查看日志

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

    Android 日志

    命令格式:

    [adb] logcat [<option>] ... [<filter-spec>] ...
    

    常用用法列举如下:

    按级别过滤日志

    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 和级别过滤日志

    <filter-spec> 可以由多个 <tag>[:priority] 组成。

    比如,命令:

    adb logcat ActivityManager:I MyApp:D *:S
    

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

    日志格式

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

    日志支持按以下几种 <format>

    • brief

      默认格式。格式为:

      <priority>/<tag>(<pid>): <message>
      

      示例:

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

      格式为:

      <priority>(<pid>) <message>
      

      示例:

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

      格式为:

      <priority>/<tag>: <message>
      

      示例:

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

      格式为:

      <message>
      

      示例:

      Disconnected process message: 10, size: 0
      
    • time

      格式为:

      <datetime> <priority>/<tag>(<pid>): <message>
      

      示例:

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

      格式为:

      <datetime> <pid> <tid> <priority> <tag>: <message>
      

      示例:

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

      格式为:

      [ <datetime> <pid>:<tid> <priority>/<tag> ]
      <message>
      

      示例:

      [ 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 那一行前面的时间就是。

    相关文章

      网友评论

          本文标题:ADB—查看日志

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