Android NDK 开发中 adb logcat 命令的使用

时间:2023-11-09 18:37:02

一、
LogCat 存储在一个叫做 circular memory buffers 的缓冲中。
平时常用的都是通过eclipse 自带的 logcat 插件查看 logcat ,
其实也可以通过命令来导出 logcat ,以方便在某些特定的情况查看 logcat ,
如下是个简单的用法命令:

adb logcat -d > logcat.txt

---------------------- 你看见或看不见,我都是个分割线 -------------------------
二、
参照网上查找的资料和自己前些时间的开发工作实践,
(初步的探索,难免有浅陋之处,欢迎高手不吝赐教。)
总结了一些logcat 高级详细使用方法,如下所示:

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

[options] 命令包括如下选项:
-f <filename>  — 指定输出日志信息到某个文件 ,默认是 stdout 。

-g         — 输出指定的日志缓冲区,输出后退出。

-n <count>   — 设置日志的最大数目<count> .,默认值是4,需要和 -r 选项一起使用。

-r <kbytes>    — 每<kbytes> 时输出日志,默认值为16,需要和-f 选项一起使用。

-s        — 设置过滤器,例如指定 '*:s'。

过滤器的格式是一个这样的串:<tag>[:priority]
其中 <tag> 表示log的component, tag (或者使用 * 表示所有) , priority 从低到高如下所示:
  V — Verbose
  D — Debug
  I — Info
  W — Warn
  E — Error
  F — Fatal
  S — Silent

-v <format>   — 设置log的打印格式, <format> 只能是以下选项中的一种:
           这些字段可以通过修改输出格式来控制输出结果。

  brief:  显示优先级/标记和原始进程的PID (默认格式)
  process: 仅显示进程PID
  tag:   仅显示优先级/标记
  thread: 仅显示进程:线程和优先级/标记
  raw:   显示原始的日志信息,没有其他的元数据字段
  time:   显示日期,调用时间,优先级/标记,PID
  long:   显示所有的元数据字段并且用空行分隔消息内容

-c          — 清除所有log并退出

-d        — 得到所有log并退出 (不阻塞)

-b <buffer>   — 请求不同的环形缓冲区

Android日志系统为日志消息保持了多个循环缓冲区,而且不是所有的消息都被发送到默认缓冲区,
要想查看这些附加的缓冲区,可以使用-b 选项,以下是可以指定的缓冲区:
   main — 查看主缓冲区 (默认缓冲区)
   radio — 查看包含在无线/电话相关的缓冲区消息
   events — 查看事件相关的消息

-B         — 输出log到二进制文件中(或者是以二进制形式输出log)。

---------------------- 你看见或看不见,我都是个分割线 -------------------------
三、
下面列举一个稍复杂一些的 logcat 命令使用:

adb logcat -v time -s file_a.cpp:V file_b.cpp:W *:S > logcat_local.txt

个人觉得,能看懂并熟练运用这种程度的命令,应该基本够用了。^_^