Monkey log异常分析说明

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进行相关的判断和分析,具体的异常则需要具体问题具体分析

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,817评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,329评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,354评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,498评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,600评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,829评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,979评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,722评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,189评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,519评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,654评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,329评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,940评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,762评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,993评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,382评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,543评论 2 349

推荐阅读更多精彩内容