资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,Android,的,logcat,用法,Android的logcat详细用法 Android日志系统提供了记录和查看系统调试信息的功能。日志都是从各种软件和一些系统的缓冲区中记录下来的,缓冲区可以通过 logcat 命令来查看和使用.下面简单介绍一下常见抓取并过滤筛选logcat的方法,最为常用的adb logcat xxx.txt,此方法为实时将log保存到xxx.txt文件中,需要手动停止,adb logcat-d-f/sdcard/xxx.txt,此方法为将缓存中现有的Log保存到sdcard中的xxx.txt文件中,不需要手动停止,查看和跟踪系统日志缓冲区的命令logcat的一般用法是:,adb logcat .,切换到网络adb,setprop service.adb.tcp.port 5555,stop adbd,start adbd,切换回USB模式,setprop service.adb.tcp.port-1,options include:,-s 设置默认的过滤级别为silent.,-f 指定输出日志信息的 ,,-r 每 时输出日志,默认值为16,需要和-f 选项一起使用.-s 设置默认的过滤级别为silent.,-n 设置日志的最大数目.,默认值是4,需要和-r 选项一起使用,-v 设置日志输入格式,默认的是brief格式,-c 清除缓存中的日志.,-d 将缓存中的日志打印到屏幕上并退出,-t 仅打印最近几行的log,-g 查看缓冲区的大小,-b 加载一个可使用的日志缓冲区供查看,比如event和radio.默认值是main,-B 以二进制方式打印Log,每一条日志消息都有一个标记和优先级与其关联。,标记是一个简短的字符串,用于标识原始消息的来源(例如View 来源于显示系统)。,优先级是下面的字符,顺序是从低到高:,V,明细(最低优先级),D,调试,I,信息,W,警告,E,错误,F,严重错误,S,无记载(最高优先级,没有什么会被记载),通过运行logcat,可以获得一个系统中使用的标记和优先级的列表,观察列表的前两列,给出的格式是/,如果想要减少输出的内容,可以加上过滤器表达式进行限制,过滤器可以限制系统只输出感兴趣的标记-优先级组合。,过滤器表达式的格式是tag:priority.,其中tag是标记,priority是最小的优先级,该标记标识的所有大于等于指定优先级的消息被写入日志。也可以在一个过滤器表达式中提供多个这样的过滤,它们之间用空格隔开。,下面给出的例子是仅输出标记为,“,ActivityManager,”,并且优先级大于等于,“,Info,”,和标记为,“,MyApp,”,并且优先级大于等于,“,Debug,”,的日志:,adb logcat ActivityManager:I MyApp:D*:S,adb logcat-s ActivityManager:I MyApp:D,两者输出结果一致,上面表达式的最后的元素*:S,,是设置所有的标签为,“,silent,”,,所有日志只显示有,“,ActivityManager,”,and,“,MyApp,”,的,用*:S 的另一个用处是 能够确保日志输出的时候是按照过滤器的说明限制的,也让过滤器也作为一项输出到日志中.,在linux环境下过滤log可以使用下面的命令,adb logcat|grep MyApp,下面的表达是显示所有优先级大于等于,“,warning,”,的日志,adb logcat*:W,控制日志格式,日志消息在标记和优先级之外还有很多元数据字段,这些字段可以通过修改输出格式来控制输出结果,-v 选项加上下面列出的内容可以控制输出字段:,brief,显示优先级/标记和原始进程的PID(默认格式),process,仅显示进程PID,tag,仅显示优先级/标记,thread,仅显示进程:线程和优先级/标记,raw,显示原始的日志信息,没有其他的元数据字段,time,显示日期,调用时间,优先级/标记,PID,long,显示所有的元数据字段并且用空行分隔消息内容,例如:adb logcat-v time 输出的log标有时间,Android日志系统为日志消息保持了多个循环缓冲区,而且不是所有的消息都被发送到默认缓冲区,要想查看这些附加的缓冲区,可以使用-b 选项,以下是可以指定的缓冲区:,radio,查看包含在无线/电话相关的缓冲区消息,events,查看事件相关的消息,main,查看主缓冲区(默认缓冲区),-b 选项的用法:,adb logcat-b,例如查看radio缓冲区,adb logcat-b radio,Dmesg log抓取方法,对于可以进行adb root操作的设备,adb shell dmesg xxx.txt,同上实时将kernel log保存到xxx.txt文件中,可事实打印log,需要手动停止,若无法进行adb root操作,但可以在adb shell 中su的话可以通过cat proc/kmesg/sdcard/xxx.txt&可以事实取log,另一种方法为:dmesg /sdcard/xxx.txt 仅输入缓存中的log,无法事实取log。,10,通过DDMS抓取并筛选Log,DDMS基本介绍,DDMS全称是Dalvik debug monitor service,是一种图形化的调试工具,,和命令行形式的ADB一起,共同搭建起IDE与Emulator/Device之间的桥,梁,DDMS的主要功能,通过DDMS,可以查看到当前运行的进程/线程状态,可以查看当前的堆信,息和调试信息,可以查看到进程分配内存的情况,可以向,emulator/device打电话以及发短信等,。,DDMS的启动,DDMS放在SDK的tool路径下,双击ddms.bat启动,通过DDMS抓的其实跟用dos批处理抓的一样都是logcat的日志文件,,ddms,抓的通常是main缓存中的,就是应用程序打印的日志文件。不过ddms好处,在于能够实时看到带有颜色的,如果是用dos批处理只能重定向到文件,到,抓完之后才能够看到,不是实时的。,DDMS主界面,抓取,log,DDMS,下面的控制台输出当前的,log,信息。,由于默认输出的,log,过多,我们需要对,log,信息进行过滤,有两种过滤方式:,1),按照级别过滤,DDMS,把,log,分成五种级别:,V(vorbose),级别最低,D(debug),I(information),W(warning),E(error),级别最高,需要注意的是按照级别过滤,log,时,会把当前级别以及当前级别以下级别的,log,也一并输出。,2),按照,tag,过滤,选择最左边的绿色加号,便可以实现按照,tag,过滤,可通过新建多个,log filter,同时筛选多个进程的,log,保存,log,在选中所需要的,log,后,点击最右边的保存按钮进行保存。,测试所需,Log,及抓取方法,1.Logcat,:系统日志,常用于跟踪由系统行为导致的网络状态改变,(,如:系统休眠等),adb,命令,logcat,v time,*,.txt,2.Radio log,:,RIL,层,log,。,adb,命令,logcat,v time,b radio,*,.txt,3.ANR Trace,log,:当应用程序出现无响应时,系统会记录在哪个运行流程中出现无响应,相关代码调用会记录在,trace,文件中。,adb,命令,adb pull data/anr/,4.Kernel log,:内核,log,。,adb,命令,adb shell cat/proc/kmsg *.txt,或,adb shell dmesg,5.Tcpdump log,:,TCP/IP,协议相关,log,。,adb,命令,adb shell tcpdump,6.Getprop,:显示终端状态信息。,adb,命令,adb shell getprop,7.Busybox,:常用工具集,可查看路由表等。,adb,命令,adb shell busybox route,测试所需,Log,及抓取方法,8.Ip route list,:,adb,shell,下查看路由表的命令。,进入,adb shell ip route list,9.Netcfg,:用于配置和查看网络配置文件。,adb,命令,adb shell netcfg,
展开阅读全文