扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
首先,让我们看一看AndroidLog的格式。下面这段log是以所谓的long格式打印出来的。从前面Logcat的介绍中可以知道,long格式会把时间,标签等作为单独的一行显示。
清河ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为创新互联的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:18982081108(备注:SSL证书合作)期待与您的合作!
[ 12-09 21:39:35.510 396: 416 I/ActivityManager ]
Start procnet.coollet.infzmreader:umengService_v1 for service
net.coollet.infzmreader/com.umeng.message.
UmengService:pid=21745 uid=10039 gids={50039, 3003, 1015,1028}
[ 12-09 21:39:35.518 21745:21745I/dalvikvm ]
Turning on JNI app bug workarounds fortarget SDK version 8...
[ 12-09 21:39:35.611 21745:21745D/AgooService ]
onCreate()
我们以第一行为例:12-09 是日期,21:39:35.510是时间396是进程号,416是线程号;I代表log优先级,ActivityManager是log标签。
在应用开发中,这些信息的作用可能不是很大。但是在系统开发中,这些都是很重要的辅助信息。开发工程师分析的log很多都是由测试工程师抓取的,所以可能有些log根本就不是当时出错的log。如果出现这种情况,无论你怎么分析都不太可能得出正确的结论。如何能最大限度的避免这种情况呢?笔者就要求测试工程师报bug时必须填上bug发生的时间。这样结合log里的时间戳信息就能大致判断是否是发生错误时的log。而且根据测试工程师提供的bug发生时间点,开发工程师可以在长长的log信息中快速的定位错误的位置,缩小分析的范围。
同时我们也要注意,时间信息在log分析中可能被错误的使用。例如:在分析多线程相关的问题时,我们有时需要根据两段不同线程中log语句执行的先后顺序来判断错误发生的原因,但是我们不能以两段log在log文件中出现的先后做为判断的条件,这是因为在小段时间内两个线程输出log的先后是随机的,log打印的先后顺序并不完全等同于执行的顺序。那么我们是否能以log的时间戳来判断呢?同样是不可以,因为这个时间戳实际上是系统打印输出log时的时间,并不是调用log函数时的时间。遇到这种情况唯一的办法是在输出log前,调用系统时间函数获取当时时间,然后再通过log信息打印输出。这样虽然麻烦一点,但是只有这样取得的时间才是可靠的,才能做为我们判断的依据。
另外一种误用log中时间戳的情况是用它来分析程序的性能。一个有多年工作经验的工程师拿着他的性能分析结果给笔者看,但是笔者对这份和实际情况相差很远的报告表示怀疑,于是询问这位工程师是如何得出结论的。他的回答让笔者很惊讶,他计算所采用的数据就是log信息前面的时间戳。前面我们已经讲过,log前面时间戳和调用log函数的时间并不相同,这是由于系统缓冲log信息引起的,而且这两个时间的时间差并不固定。所以用log信息前附带的时间戳来计算两段log间代码的性能会有比较大的误差。正确的方法还是上面提到的:在程序中获取系统时间然后打印输出,利用我们打印的时间来计算所花费的时间。
了解了时间,我们再谈谈进程Id和线程Id,它们也是分析log时很重要的依据。我们看到的log文件,不同进程的log信息实际上是混杂在一起输出的,这给我们分析log带来了很大的麻烦。有时即使是一个函数内的两条相邻的log,也会出现不同进程的log交替输出的情况,也就是A进程的第一条log后面跟着的是B进程的第二条log,对于这样的组合如果不细心分析,就很容易得出错误的结论。这时一定要仔细看log前面的进程Id,把相同Id的log放到一起看。
切换到QQ下面的“动态”选项卡,进入“兴趣部落”(我只在兴趣部落弄了,其他地方没有试过)。
然后用手指连续点击“兴趣部落”几个大标题几次,就会弹出一个对话框,提示你
是否开启log
选择yes之后,就会弹出一个log日志详情对话框。
点击右上角的关闭按钮,日志对话框就会隐藏起来,至显示一个“+”小图标,在此点击这个小图标,窗口就会恢复回来
5
关闭log窗口,只需在页面上在此连续点击几次就可以关闭窗口了,有兴趣的同学可以试试
:)
使用cmd命令查看logcat 使用adb logcat命令可查看android系统和应用的log adb logca
安卓(Android)是一个基于Linux内核的操作系统,是Google公司在2007年11月5日公布的手机操作系统,不是手机,不过有很多手机采用安卓系统。安卓系统是一款手机系统,现在流行的主流的手机系统之一。手机系统有,java,塞班等,类似于电脑的windows2000系统、windowsVista系统等,这款系统常用在HTC的手机上,属于智能系统。
安卓手机指的是有Android这个操作系统的智能手机,诺基亚用的都是塞班系统,现在谷歌推出的安卓系统,比塞班安卓手机开放,软件资源更多,可玩性比塞班高很多,现在市场占有率超过塞班了,甚至超越苹果的IOS系统占有率。安卓(Android)是基于Linux内核的操作系统,是Google公司在2007年11月5日公布的手机操作系统,不是手机,不过现在有很多手机采用安卓系统。安卓系统是一款手机系统,现在流行的主流的手机系统之一。目前手机系统有,java,塞班等,类似于电脑的windows2000系统、windows Vista系统等,这款系统常用在HTC的手机上,属于智能系统。
文件扩展名: .log
log意即日志,通常是系统或者某些软件对已完成的某种处理的记录,以便将来做为参考,它并没有固定的格式,通常是文本文件,可以用记事本打开以查看内容,当然很可能是其它格式,直接打开就是乱码。大部分的log可以从文件名看出它的作用,比如uninstall.log或是error.log,当然前者通常是软件安装过程中生成的记录,以便将来卸载的时候可以提供给卸载程序使用,后者通常是用来记录一些软件运行中的错误信息等等。
首先,会发现数量最多的是"i tall.log"文件,而且都在各个应用软件的文件夹中,打开它,可以发现它详细地记录了安装信息:软件的源路径、安装时间、安装的整个过程,安装软件时的每一个操作,都会在这儿留下记录,包括向文件夹中拷贝".dll",对注册表进行修改,如果有足够耐心,完全可以通过它自己安装软件。其实它的重要作用是为删除软件作准备的。如果删除或把这个文件从原来的文件夹中移开,在控制面板-添加/删除程序中不能卸载这个软件。它可由unwise.exe或它所在文件中的unwise.exe调用,假如执行unwise.exe文件,将会弹出对话框,要求提供"*.log",这类软件有:netants,acdsee,ultraedit,jetcar以及很多游戏。例如在注册表中关于NETANTS(网络蚂蚁,一个国产的下载加速软件)的卸载是这样记录的:
[HKEY_LOCAL_MACHINE\Software \Microsoft \Windows \CurrentVersion \Uni tall \NetAnts]
"Di layName"=" etAnt quot;
"Uni tallString"="D:\\NETANTS\\UNWISE.EXE D:\\NETANTS\\I TALL.LOG",这里是不是看得很明显。
当然安装软件的记录文件也并不一定都是用这个文件名I TALL.LOG,象vopt99中产生一个vopt.log 的文件,它也是由安卓下的unwise.exe调用来删除软件。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流