Android的调试打印接口分析

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

Android的调试打印接口分析Android输出Log可以通过使用Android.util中的Log类来实现。android.util.Log常用的方法有以下5个:Log.v()Log.d()Log.i()Log.w()以及Log.e()。根据首字母对应VERBOSE、DEBUG、INFO、WARN、ERROR。例如,在执行下面的代码后,会输出Log到LogCatView里:Log.v(tag,message);Java中原有的打印语句System.out.println()的打印也会被输出到LogCat,它的Tag标签是”System.out”在Eclipse下会通过如下的窗口显示:在机顶盒命令模式下,则需要执行logcat命令在串口输出打印(或者将打印输出到指定文件)。1、使用android.util.log的优点1)功能强大,使用方便Logcat可以根据调试级别输出不同等级的信息(VERBOSE,DEBUG,INFO,WARN,ERROR),而且可以过滤输出指定tag的调试信息;2)系统自动添加调试信息,定位问题快捷程序异常退出、强制关闭、长时间无响应时,系统会自动生成log打印。包括系统基本信息(内存,CPU,进程队列,虚拟内存,垃圾回收等)、时间信息和虚拟机信息(包括进程的,线程的跟踪信息)。2、使用android.util.log的缺点中间件其它模块的打印最后统一由rocme_porting_dprintf()实现,独独android的java输出使用了自己的底层实现(调用Linux的write(intfildes,constvoid*buf,size_tnbyte)),不够统一。3、Android中Java打印在底层改由rocme_porting_dprintf()实现的优点中间件打印最后统一由rocme_porting_dprintf()实现,这样只需修改porting就可以实现打印的开关、打印终端的控制(串口、控制台……)。4、Android中Java打印改由rocme_porting_dprintf()实现的缺点1)Androidlog原有的输出等级控制和输出过滤的功能将丧失,Android内部C和C++实现中用LOGV、LOGD、LOGI等分等级输出的打印将全部会输出,除非rocme_porting_dprintf()也实现分等级输出的功能;2)Android在运行Java应用的时候,会将每个进程的标准输出sdtout等重定向到/dev/log/下的三个文件(main、radio、events)中进行缓存,执行logcat命令后再重定向到串口进行输出。若改用rocme_porting_dprintf(),则需要其实现将每个进程的标准输出sdtout重定向,这样会降低系统效率。也可以修改Android实现,一开始就将每个进程的标准输出重定向到我们想要的终端,但这样Android的logcat功能就没有了。3)Android为了支持logcat及其它我们还未了解的功能,在上百处地方使用了输出重定向。在没有充分了解这些使用意图的前提下,我们直接用rocme_porting_dprintf()替代,存在一定的风险。

1 / 2
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功