安卓系统的代码量十分庞大,无法使用Jlink之类的工具进行单步调试,因而日志系统十分有必要。为此,安卓开发了Log日志类用于开发者的日常调试使用。Log中配置了五种Log类,分别表示打印五类不同输出等级的Log,如下:
一般使用Log.i()和Log.e()会比较多。
当程序中添加上述打印信息后,需要上层加入logcat进行捕获,logcat是一个命令行工作,可以在shell下进行日志捕获,我们可以使用logcat进行数据项捕获,经常配合grep一起使用,常用指令为logcat | grep -iE "待检索项"。
一般情况下我们进行单点调试时,"待检索项"一般为有特定标识的字符序,例如查看485通信问题时,一般程序中对应日志位置都加入rs485,此时shell下只需要检索logcat | grep -iE "rs485"就可以输出所有关于485的打印信息。
后缀加入 & 符可使logcat指令在后台运行,用于持续日志捕获。jobs 指令可输出后台运行的任务。kill %1表示关闭序号为1的任务。
检索多项时,使用grep -v来做区分:logcat | grep -iE "1234" | grep -v "12"。
补充知识:C语言中的输出格式描述符
%d表示十进制数据项。
%s表示字符串。字符串需要以'\0'作为结尾,否则容易出现多输出的情况。
%x表示16进制数据项。
%c表示字符。
%f表示输出浮点型。%.2f,表示小数点后2位
详见下面博客: