Monkey log异常分析说明
以下主要针对在Android-Phone项目中进行Monkey log进行分析和说明,可以对bug提交作为参考。
要求熟悉,应用的包名。也就是说那个应用包出现问题,该属于那个模块,应用包名是判断依据。
1、 Null指针异常
空指针异常主要是有NullPointerException异常提示,在Monkey测试过程中,该信息一般记录在plog.log (locat中也有该信息)中。
如果Monkey命令被中断,说明有异常信息并且有对应的打印信息,可以看到如下信息,说明几个问题:
A、android.process.acore该进程出现异常
B、异常信息主要是由于NullPointerException引起的,也就是出现了空指针,导致了acore进程进入debug
C、具体的可以继续分析是由哪个函数的那一行导致的,如可以从rollAnimate3dRotate.java文件中的275行查找等。
//at com.android.launcher.LauncherAnimator.ScrollAnimate3dRotate.drawFrame(ScrollAnimate3dRotate.java:275)
D、可能同一应用中存在多处的空指针异常,所以一旦出现空指异常后,可以分析和对比log信息,如果不一致的话,需要把新的log信息也一同添加到bug中,如果log信息一直的话,则不需要继续补充没有必要的log信息。
**************************************************************************
// CRASH: android.process.acore (pid 1339)
// Short Msg: java.lang.NullPointerException
// Long Msg: java.lang.NullPointerException
// Build Label: android:FIH/msm7627_surf/msm7627_surf/F0X:1.6/DONUT/0001_0_020:e
ng/release-keys
// Build Changelist: -1
// Build Time: 1271397239
// ID:
// Tag: AndroidRuntime
// java.lang.NullPointerException:
//   at com.android.launcher.LauncherAnimator.ScrollAnimate3dRotate.drawFrame(ScrollAnimate3dRotate.java:275)
//   at com.android.launcher.Workspace.dispatchDraw(Workspace.java:605)
//   at android.view.ViewGroup.drawChild(ViewGroup.java:1524)
//   at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1256)
//   at com.android.launcher.DragLayer.dispatchDraw(DragLayer.java:258)
//   at android.view.ViewGroup.drawChild(ViewGroup.java:1524)
//   at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1256)
//   at android.view.View.draw(View.java:6329)
//   at android.widget.FrameLayout.draw(FrameLayout.java:352)
//   at android.view.ViewGroup.drawChild(ViewGroup.java:1526)
//   at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1256)
//   at android.view.View.draw(View.java:6329)
//   at android.widget.FrameLayout.draw(FrameLayout.java:352)
//   at com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:1901)
//   at android.view.ViewRoot.draw(ViewRoot.java:1333)
//   at android.view.ViewRoot.performTraversals(ViewRoot.java:1098)
//   at android.view.ViewRoot.handleMessage(ViewRoot.java:1618)
//   at android.os.Handler.dispatchMessage(Handler.java:99)
//   at android.os.Looper.loop(Looper.java:123)
//   at android.app.ActivityThread.main(ActivityThread.java:4203)
//   at java.lang.reflect.Method.invokeNative(Method.java:-2)
//   at java.lang.reflect.Method.invoke(Method.java:521)
//   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:799)
//   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557)
//   at dalvik.system.NativeStart.main(NativeStart.java:-2)
** System appears to have crashed at event 7908 of 5000000 using seed 0
2、 debug异常
debug异常主要是由于应用程序本身的错误导致的异常。在Monkey测试过程中,该信息同样记录在plog.log (locat中也有该信息)中。一般情况下,出现的该问题,很可能在手动测试时也可以测试到。
A、 com.android.browser该进程进入debug
B、 出现的是IllegalStateException异常,该异常一般多是传递的参数非法或被多次调用时出现的异常
C、 Bug信息提交时,详细信息中一般应该包含如下的log信息,方便开发人员分析和定位。
************************************************************************
// CRASH: com.android.browser (pid 5683)
// Short Msg: Connection is not open
// Long Msg: java.lang.IllegalStateException: Connection is not open
// Build Label: android:FIH/msm7627_surf/msm7627_surf/F0X:1.6/DONUT/0001_0_020:eng/release-keys
// Build Changelist: -1
// Build Time: 1271397239
// ID:
// Tag: AndroidRuntime
// java.lang.IllegalStateException: Connection is not open
//   at android.net.http.AndroidHttpClientConnection.assertOpen(AndroidHttpClien
tConnection.java:153)
//   at android.net.http.AndroidHttpClientConnection.setSocketTimeout(AndroidHtt
pClientConnection.java:195)
//   at android.net.http.Connection.openHttpConnection(Connection.java:364)
//   at android.net.http.Connection.processRequests(Connection.java:225)
//   at android.net.http.ConnectionThread.run(ConnectionThread.java:116)
** System appears to have crashed at event 34155 of 5000000 using seed 0**
3、 低内存异常
低内存异常一般情况下,主要表现在出现OutOfMemoryError异常或者提示Out of memory,其后果同样表现为抛出OutOfMemoryError异常或者是通过kill process 来杀掉部分进程以释放内存空间,当然如果被kill点关键的进程的话,也就可能导致部分应用会自动的退出。出现该情况时,主要是在进行频繁的进行大量的操作导致的,所以使用手动的方式也是可能进行重现的。
A、 com.android.elastos.backup该进程出现的异常
B、 出现的是OutOfMemoryError异常,该异常一般多频繁的操作(即多次调用某个函数,存在申请变量空间未释放)导致的
C、 Bug信息提交时,详细信息中同样应该包含如下的log信息,方便开发人员分析和定位。
// CRASH: com.android.elastos.backup (pid 1581)
// Short Msg: bitmap size exceeds VM budget
// Long Msg: java.lang.OutOfMemoryError: bitmap size exceeds VM budget
// Build Label: android:FIH/msm7627_surf/msm7627_surf/F0X:1.6/DONUT/0001_0_020:eng/release-keys
// Build Changelist: -1
// Build Time: 1271397239
// ID:
// Tag: AndroidRuntime
// java.lang.OutOfMemoryError: bitmap size exceeds VM budget
//   at android.graphics.Bitmap.nativeCreate(Bitmap.java:-2)
//   at android.graphics.Bitmap.createBitmap(Bitmap.java:464)
//   at android.graphics.Bitmap.createBitmap(Bitmap.java:431)
//   at android.graphics.Bitmap.createScaledBitmap(Bitmap.java:336)
//   at android.widget.AbsListView.preScaleBitmapBG(AbsListView.java:2354)
//   at android.widget.AbsListView.draw(AbsListView.java:2365)
//   at android.view.ViewGroup.drawChild(ViewGroup.java:1526)
//   at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1256)
//   at android.view.View.draw(View.java:6329)
//   at android.view.ViewGroup.drawChild(ViewGroup.java:1526)
//   at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1256)
//   at android.view.View.draw(View.java:6329)
//   at android.widget.FrameLayout.draw(FrameLayout.java:352)
//   at android.view.ViewGroup.drawChild(ViewGroup.java:1526)
//   at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1256)
//   at android.view.View.draw(View.java:6329)
//   at android.widget.FrameLayout.draw(FrameLayout.java:352)
//   at com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:1901)
//   at android.view.ViewRoot.draw(ViewRoot.java:1333)
//   at android.view.ViewRoot.performTraversals(ViewRoot.java:1098)
//   at android.view.ViewRoot.handleMessage(ViewRoot.java:1618)
//   at android.os.Handler.dispatchMessage(Handler.java:99)
//   at android.os.Looper.loop(Looper.java:123)
//   at android.app.ActivityThread.main(ActivityThread.java:4203)
//   at java.lang.reflect.Method.invokeNative(Method.java:-2)
//   at java.lang.reflect.Method.invoke(Method.java:521)
//   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:799)
//   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557)
//   at dalvik.system.NativeStart.main(NativeStart.java:-2)
** System appears to have crashed at event 143290 of 100000000 using seed 0#
或者出现plog信息的最后出现如下log信息也可能存在同样问题:
<3>[56351.640641] Out of memory: kill process 14177 (app_process) score 247872 or a child
<3>[56351.641121] Killed process 14177 (app_process)
4、 操作无响应异常
操作无响应的问题,主要表现在Monkey运行过程中,出现某功能无响应,提示是否“强制关闭“或“等待“,同时会打印出相应的log信息,如下:
A、 可以说明com.android.soundrecorder该进程出现的无响应
B、 出现的是TimerOut异常,该异常一般出现时一般都会又keyDispatchingTimedOut提示
C、 目前,uPhone手机中经常出现操作无响应的几个模块包括:clock、camera、soundrecorder、broser等,根据开发人员分析其他模块也是有可能出现操作无响应的,测试过程中,请多注意。
D、 出现无响应异常,一般情况下很难被修复,和发送事件的频率也是有关系的,从质量上来要求的话,要求尽可能的减少出现操作无响应的频率和时间。
// NOT RESPONDING: com.android.soundrecorder (pid 1931)
ANR in process: com.android.soundrecorder (last in com.android.soundrecorder)
Annotation: keyDispatchingTimedOut
CPU usage:
Load: 8.24 / 8.41 / 8.25
CPU usage from 35911ms to 83ms ago:
com.android.soundrecorder: 4% = 3% user + 0% kernel / faults: 997 minor 43 maj
or
mediaserver: 2% = 2% user + 0% kernel / faults: 267 minor 3 major
android.process.media: 2% = 0% user + 1% kernel / faults: 563 minor 194 major
system_server: 1% = 1% user + 0% kernel / faults: 1279 minor 5 major
com.cootek.touchpal: 0% = 0% user + 0% kernel / faults: 180 minor 1 major
sensorserver_ya: 0% = 0% user + 0% kernel / faults: 47 minor 1 major
mmcqd: 0% = 0% user + 0% kernel
app_process: 0% = 0% user + 0% kernel / faults: 203 minor 1 major
com.fihtdc.brservice: 0% = 0% user + 0% kernel / faults: 29 minor
kswapd0: 0% = 0% user + 0% kernel
com.android.settings: 0% = 0% user + 0% kernel / faults: 266 minor
port-bridge: 0% = 0% user + 0% kernel / faults: 19 minor
rpcrouter: 0% = 0% user + 0% kernel
com.android.mms: 0% = 0% user + 0% kernel / faults: 135 minor 8 major
TOTAL: 13% = 8% user + 4% kernel + 0% iowait
procrank:
PID Vss Rss Pss Uss cmdline
1209 35368K 25376K 15283K 14036K system_server
1342 32788K 24596K 14899K 14136K android.process.acore
……
// procrank status was 0
anr traces:
// meminfo status was 0
** System appears to have crashed at event 59034 of 5000000 using seed 0
5、 其他异常
A、 Restart System异常(系统重新启动),即log信息的最后几行会看到Restart System的打印信息,说明手机被自动的重启或断掉,有几个方面的原因
1、 运行过程中,存在异常手机被自动重启
2、 手机在运行过程中,进入设置中的恢复出场设置,导致手机重启
3、 其他原因,如果手机后盖移动等
B、 RuntimeException等异常,同样的会在plog.log中可以看到相应的打印信息, java.lang.RuntimeException该问题多出现在操作无响应之后,或者是某应用的服务无法启动或连接时,需要具体问题具体的分析
C、 StaleDataException、readException等异常, 在plog.log中可以看到相应的打印信息,也会有相应的信息: android.database.StaleDataException,该信息说明android的数据库操作出现异常, 需要具体问题具体的分析
D、 IllegalArgumentException等异常,多少情况下为说明向函数传递了一个不正确或不合法的参数需要具体问题具体的分析
E、 其他,带补充和分析说明
说明几点:
1、 log信息的分析,希望在bug信息的简述中能够明确说明清楚出现的是什么异常,具体的log信息要单独添加到详细信息描述中,方便相关人员定位和查看。
2、 bug的提交,对于Monkey测试出现的问题:
a、 首先要求分析log信息
b、 再次要确认该bug是否已经提交?已经提交的bug和新运行出来的问题是否一致?
c、 如果不一致的话,是否属于同一问题,如空指针异常,是的话就把该问题的log信息一起注释到bug信息中,并添加所有的log信息
d、 如果不一致的,也不属于同一问题的话,可以提交新的bug
3、 在java编程中,一般的异常都会抛出xxx Exception的信息,可以跟进xxx进行相关的判断和分析,具体的异常则需要具体问题具体分析。
Monkey log异常分析说明的更多相关文章
- Canal 同步异常分析:Could not find first log file name in binary log index file
		
文章首发于[博客园-陈树义],点击跳转到原文Canal同步异常分析:Could not find first log file name in binary log index file. 公司搜索相 ...
 - Monkey测试3——Monkey测试结果分析
		
Monkey测试结果分析 一. 初步分析方法: Monkey测试出现错误后,一般的差错步骤为以下几步: 1. 找到是monkey里面的哪个地方出错 2. 查看Monkey里面出错前的一些事件动作,并手 ...
 - Android异常分析(转)
		
关于异常 异常? 异常就是一种程序中没有预料到的问题,既然是没有预料到的,就可能不在原有逻辑处理范围内,脱离了代码控制,软件可能会出现各种奇怪的现象.比如:android系统常见异常现象有应用无响应. ...
 - Monkey测试结果分析
		
Monkey测试结果分析 什么是monkey Monkey 测试是 Android 自动化测试的手段之一,它通过模拟用户的按键输入.触摸屏输入等,测试设备多长时间出现异常.Monkey 是一个命令行工 ...
 - Monkey测试结果分析【转】
		
转自[http://www.douban.com/note/257030241/] Monkey测试结果分析 一. 初步分析方法: Monkey测试出现错误后,一般的差错步骤为以下几步: 1. 找到是 ...
 - monkey测试===Monkey测试结果分析(系列三)转
		
Monkey测试结果分析 一. 初步分析方法: Monkey测试出现错误后,一般的差错步骤为以下几步: 1. 找到是monkey里面的哪个地方出错 2. 查看Monkey里面出错前的一些事件动作,并手 ...
 - 【转】Monkey测试3——Monkey测试结果分析
		
Monkey测试结果分析 一. 初步分析方法: Monkey测试出现错误后,一般的差错步骤为以下几步: 1. 找到是monkey里面的哪个地方出错 2. 查看Monkey里面出错前的一些事件动作,并手 ...
 - Linux Kernel Oops异常分析
		
1.PowerPC小系统内核异常分析 1.1 异常打印 Unable to handle kernel paging request for data at address 0x36fef31eFa ...
 - Monkey源码分析之事件源
		
上一篇文章<Monkey源码分析之运行流程>给出了monkey运行的整个流程,让我们有一个概貌,那么往后的文章我们会尝试进一步的阐述相关的一些知识点. 这里先把整个monkey类的结构图给 ...
 
随机推荐
- WPF样式学习三
			
SnapsToDevicePixels 获取或设置在呈现过程,该值来确定呈现此元素是否应使用特定于设备的像素设置. 这是一个依赖项属性. true ,如果元素应以符合呈现到设备像素;否则, false ...
 - Nodejs入门边读边想边记(-)
			
Node入门>>一本全面的Node.js教程网站地址:http://www.nodebeginner.org/index-zh-cn.html 本文记录我在阅读上面这个网站的过程中得到的一 ...
 - nc扫描端口
			
nc -n -v -z -w 1 ip地址 1-1000 (端口号) 详细信息 -v 排除dns -n 不发送任何数据-z 超时设置为1秒 -w 1
 - 在MVC中加载view(点开链接)的方式
			
主要有: Html.ActionLink Html.RenderPartial Html.RenderAction Html.Partial AJAX.ActionLink load 浏览器对象模型 ...
 - c++输入
			
1. char c = getchar(); 输入单个字符,可输入空格.换行符. 2. cin >> s; 不读取空格或换行符. 3. getline(cin, s); 输入一行到字符串s ...
 - VS打包方法(安装和部署简介)——内含大量图片,密症慎入!
			
友情提示:内含大量文字.图片,密集恐惧症者慎入! 主要记述一下利用微软集成开发环境VS打包的方法和详细步骤. 1.新建打包工程 打开VS,文件->添加项目->新建项目(如图1),在添加新项 ...
 - C++指针的概念解读
			
C++指针的概念解读 超详细 指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址.要搞清一个指针需要搞清指针的四方面的内容:指针的类型,指针所指向的类型,指针的值或者叫指针所指向的内存区 ...
 - Aizu  0121 Seven Puzzle(变进制数的完美hash)
			
一遍预处理跑完所有情况,O(1)回答就好.状态记录我用的康拓和逆康拓. #include<bits/stdc++.h> using namespace std; ]; ]; ]; int ...
 - ES6 Reflect使用笔记
			
Reflect Reflect 对象和Proxy对象一样, 为操作对象提供了新的API. 为什么使用 Reflect的方式来操作对象? 将 Object 对象上一些明显属于内部的方法放到 Reflec ...
 - STL MAP使用注意事项
			
Hat’s Words A hat’s word is a word in the dictionary that is the concatenation of exactly two other ...