返回信息流呃呃呃,又来麻烦各位大大了真是不好意思
事情是这样的,一个星期前公司项目上线,程序里面集成有testin,所以用户跑游戏崩掉在后台可以看到崩溃数据,现在是要从这些数据中找出崩溃的原因,提出解决方案。其中百分之八十的崩溃都是SIGSEGV(这是神马,只知道似乎跟内存有关而且一定不能吃,嗯)现在问题就来了,得到的数据只有崩溃那个时候的线程堆站数据,符号化之后就变成类似下面这种东西:
Crash reason: SIGSEGV
Crash address: 0x555b0c58
Thread 10 (crashed)
0 0x555b0c58
1 libcocos2dlua.so!cocos2d::CCLuaStack::executeFunction(int) [CCLuaStack.cpp : 446 + 0x7]
2 libcocos2dlua.so!cocos2d::CCLuaStack::executeFunctionByHandler(int, int) [CCLuaStack.cpp : 492 + 0x9]
3 libcocos2dlua.so!cocos2d::CCLuaEngine::executeNodeEvent(cocos2d::CCNode*, int) [CCLuaEngine.cpp : 129 + 0xb]
4 libcocos2dlua.so!cocos2d::CCNode::onEnter() [CCNode.cpp : 918 + 0x9]
5 libcocos2dlua.so!cocos2d::ui::Widget::onEnter() [UIWidget.cpp : 115 + 0x5]
6 libcocos2dlua.so!cocos2d::CCNode::addChild(cocos2d::CCNode*, int, int) [CCNode.cpp : 614 + 0x9]
7 libcocos2dlua.so!cocos2d::ui::Widget::addChild(cocos2d::CCNode*, int, int) [UIWidget.cpp : 145 + 0x3]
8 libcocos2dlua.so!cocos2d::CCNode::addChild(cocos2d::CCNode*) [CCNode.cpp : 628 + 0x15]
9 libcocos2dlua.so!cocos2d::ui::Widget::addChild(cocos2d::CCNode*) [UIWidget.cpp : 134 + 0x3]
10 libcocos2dlua.so!tolua_CocoStudio_Widget_addChild00 [LuaCocoStudio.cpp : 6866 + 0xb]
11 libcocos2dlua.so!tolua_CocoStudio_Widget_addChild01 [LuaCocoStudio.cpp : 6904 + 0x5]
12 libcocos2dlua.so!tolua_CocoStudio_Widget_addChild02 [LuaCocoStudio.cpp : 6936 + 0x5]
。。。完全看不懂啊,好可怕
我想问的是:
1.。。。。。。这个是神马?
2.这个东西有用吗?还是完全没有价值呢?(求别,这货我拿来分类统计过的,花了好长时间了呢)
3.如果还有点用的话,分析问题的原因,应该从什么地方着手?
这是一条镜像帖。来源:北邮人论坛 / mobile-terminal-at / #19106同步于 2014/12/21
该镜像源已超过 30 天没有更新,可能在源站已被删除。
MobileTerminalAT机器人发帖
求助怎么从崩溃线程的堆栈信息中分析崩溃原因?
ytinrete
2014/12/21镜像同步19 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
还有就是最近在做一个打包工具,因为有很多个渠道,打开eclipse一个一个的打包太麻烦
想照着这个 http://blog.csdn.net/hytfly/article/details/24458133 写一个工具,不知道靠不靠谱
用eclipes自身打包走的流程是什么样的呢?应该,也是,调用那些工具,打包的,吧。。。
呃,要是自己做的工具打包打坏了就麻烦了。
心塞。
归根结底还是自己太弱了,呜QAQ.
栈里有 addchild 我还看到了cocostudio
╮(╯_╰)╭ 嗯 我猜崩溃的地方是 cocostudio 画的界面 猜的 无责任猜测
我当年用的时候 studio 还极其不健全 不稳定。。问题一大堆。。。现在studio不了解了。。
栈信息就这么多么?
反正我是猜的
突然发现了个问题 thread 10 却出现了addchild 这个child是ui绘制么?(如果是的话。。。。。今天版内帖子主题 都是 异步线程UI绘制咩?)
iOS里反正 如果不经过特殊处理。。。线程里 绘制ui 一定崩溃
大大你又出现了
这个问题真的好难办呐 都是偶发的,玩着玩着就崩了这样。
比如今天崩溃六千多次,但是只占到启动次数的4%,平时测试几乎没办法测出来
看看人家IOS酱都不到0.5%的崩溃率,安卓怎么可以这么傲娇的?!差评!
报SIGSEGV,每个报告的堆栈信息都不一样,不过也算是大同小异。
刚刚那个的确不是全部的(大大好厉害这你都知道)
全部的在这里:
Crash reason: SIGSEGV
Crash address: 0x555b0c58
Thread 10 (crashed)
0 0x555b0c58
1 libcocos2dlua.so!cocos2d::CCLuaStack::executeFunction(int) [CCLuaStack.cpp : 446 + 0x7]
2 libcocos2dlua.so!cocos2d::CCLuaStack::executeFunctionByHandler(int, int) [CCLuaStack.cpp : 492 + 0x9]
3 libcocos2dlua.so!cocos2d::CCLuaEngine::executeNodeEvent(cocos2d::CCNode*, int) [CCLuaEngine.cpp : 129 + 0xb]
4 libcocos2dlua.so!cocos2d::CCNode::onEnter() [CCNode.cpp : 918 + 0x9]
5 libcocos2dlua.so!cocos2d::ui::Widget::onEnter() [UIWidget.cpp : 115 + 0x5]
6 libcocos2dlua.so!cocos2d::CCNode::addChild(cocos2d::CCNode*, int, int) [CCNode.cpp : 614 + 0x9]
7 libcocos2dlua.so!cocos2d::ui::Widget::addChild(cocos2d::CCNode*, int, int) [UIWidget.cpp : 145 + 0x3]
8 libcocos2dlua.so!cocos2d::CCNode::addChild(cocos2d::CCNode*) [CCNode.cpp : 628 + 0x15]
9 libcocos2dlua.so!cocos2d::ui::Widget::addChild(cocos2d::CCNode*) [UIWidget.cpp : 134 + 0x3]
10 libcocos2dlua.so!tolua_CocoStudio_Widget_addChild00 [LuaCocoStudio.cpp : 6866 + 0xb]
11 libcocos2dlua.so!tolua_CocoStudio_Widget_addChild01 [LuaCocoStudio.cpp : 6904 + 0x5]
12 libcocos2dlua.so!tolua_CocoStudio_Widget_addChild02 [LuaCocoStudio.cpp : 6936 + 0x5]
13 libcocos2dlua.so + 0x1f5062
14 libcocos2dlua.so + 0x202266
15 libcocos2dlua.so!cocos2d::CCLuaStack::executeFunction(int) [CCLuaStack.cpp : 446 + 0x7]
16 libcocos2dlua.so!cocos2d::CCLuaStack::executeFunctionByHandler(int, int) [CCLuaStack.cpp : 492 + 0x9]
17 libcocos2dlua.so!LuaCocoStudioEventListener::eventCallbackFunc(cocos2d::CCObject*, int) [lua_cocos2dx_cocostudio_manual.cpp : 453 + 0xb]
18 libcocos2dlua.so!cocos2d::ui::Widget::releaseUpEvent() [UIWidget.cpp : 786 + 0x7]
19 libcocos2dlua.so!cocos2d::ui::Widget::onTouchEnded(cocos2d::CCTouch*, cocos2d::CCEvent*) [UIWidget.cpp : 747 + 0x3]
20 libcocos2dlua.so!cocos2d::ui::TouchGroup::ccTouchEnded(cocos2d::CCTouch*, cocos2d::CCEvent*) [UITouchGroup.cpp : 181 + 0xf]
21 libcocos2dlua.so!cocos2d::CCTouchDispatcher::touches(cocos2d::CCSet*, cocos2d::CCEvent*, unsigned int) [CCTouchDispatcher.cpp : 381 + 0xf]
22 libcocos2dlua.so!cocos2d::CCTouchDispatcher::touchesEnded(cocos2d::CCSet*, cocos2d::CCEvent*) [CCTouchDispatcher.cpp : 507 + 0x5]
23 libcocos2dlua.so!cocos2d::CCEGLViewProtocol::handleTouchesEnd(int, int*, float*, float*) [CCEGLViewProtocol.cpp : 334 + 0xb]
24 libcocos2dlua.so!Java_org_cocos2dx_lib_Cocos2dxRenderer_nativeTouchesEnd [TouchesJni.cpp : 42 + 0xf]
25 libdvm.so + 0x1f332
26 dalvik-heap (deleted) + 0x3a582db
27 libdvm.so + 0x49ab5
28 dalvik-heap (deleted) + 0x7df2ee
29 libdvm.so + 0x4e097
30 data@app@com.zhancheng.sanguolua.qh360-1.apk@classes.dex + 0x29e2bf
31 libcocos2dlua.so!Java_org_cocos2dx_lib_Cocos2dxRenderer_nativeTouchesBegin [TouchesJni.cpp : 39 + 0x1]
32 0xffffffff
33 libdvm.so + 0x6e37f
34 libdvm.so + 0x73915
35 data@app@com.zhancheng.sanguolua.qh360-1.apk@classes.dex + 0x191e14
36 data@app@com.zhancheng.sanguolua.qh360-1.apk@classes.dex + 0x191e0e
37 libdvm.so + 0x7376b
38 dalvik-heap (deleted) + 0x7df2ee
39 data@app@com.zhancheng.sanguolua.qh360-1.apk@classes.dex + 0x4d6b6
40 dalvik-heap (deleted) + 0x92d76e
41 dalvik-heap (deleted) + 0x85db06
42 dalvik-heap (deleted) + 0x92d76e
43 libdvm.so + 0x65b99
44 dalvik-heap (deleted) + 0xb8865e
45 dalvik-jit-code-cache (deleted) + 0x631e6
46 data@app@com.zhancheng.sanguolua.qh360-1.apk@classes.dex + 0x191e0e
47 libdvm.so + 0x4df2b
48 dalvik-jit-code-cache (deleted) + 0x216
49 dalvik-LinearAlloc (deleted) + 0x2d7086
50 libdvm.so + 0x2cfba
51 dalvik-LinearAlloc (deleted) + 0x2d7086
52 dalvik-heap (deleted) + 0x852046
53 framework.odex + 0x717d91
54 libdvm.so + 0x5f6bf
55 dalvik-LinearAlloc (deleted) + 0x2d7086
56 dalvik-heap (deleted) + 0x852046
57 libdvm.so + 0x5f6e9
58 libdvm.so + 0x54b0d
59 libdvm.so + 0x54a6b
60 libdvm.so + 0x54a6b
61 libc.so + 0x12e72
62 libc.so + 0x125ca
63 libEGL.so + 0x21c3a
根据统计,类似这几个的见得比较多:
0 decode_fd (deleted) + 0x18064
1 libcocos2dlua.so!cocos2d::CCLuaStack::executeFunction(int) [CCLuaStack.cpp : 446 + 0x7]
2 libcocos2dlua.so!cocos2d::CCLuaStack::executeFunctionByHandler(int, int) [CCLuaStack.cpp : 492 + 0x9]
3 libcocos2dlua.so!cocos2d::extra::CCHTTPRequest::update(float) [CCHTTPRequest.cpp : 353 + 0xb]
4 libcocos2dlua.so!cocos2d::CCScheduler::update(float) [CCScheduler.cpp : 809 + 0x9]
5 libcocos2dlua.so!cocos2d::CCDirector::drawScene() [CCDirector.cpp : 257 + 0x9]
6 libcocos2dlua.so!cocos2d::CCDisplayLinkDirector::mainLoop() [CCDirector.cpp : 1134 + 0x3]
7 libcocos2dlua.so!Java_org_cocos2dx_lib_Cocos2dxRenderer_nativeRender [Java_org_cocos2dx_lib_Cocos2dxRenderer.cpp : 14 + 0x3]
这个跟http请求有关吧。。
0 icudt48l.dat + 0x3a0c20
1 libcocos2dlua.so!cocos2d::CCLuaStack::executeFunction(int) [CCLuaStack.cpp : 446 + 0x7]
2 libcocos2dlua.so!cocos2d::CCLuaStack::executeFunctionByHandler(int, int) [CCLuaStack.cpp : 492 + 0x9]
3 libcocos2dlua.so!cocos2d::CCLuaEngine::executeNodeEvent(cocos2d::CCNode*, int) [CCLuaEngine.cpp : 129 + 0xb]
4 libcocos2dlua.so!cocos2d::CCNode::onEnter() [CCNode.cpp : 918 + 0x9]
5 libcocos2dlua.so!cocos2d::ui::Widget::onEnter() [UIWidget.cpp : 115 + 0x5]
6 libcocos2dlua.so!cocos2d::CCNode::addChild(cocos2d::CCNode*, int, int) [CCNode.cpp : 614 + 0x9]
7 libcocos2dlua.so!cocos2d::ui::Widget::addChild(cocos2d::CCNode*, int, int) [UIWidget.cpp : 145 + 0x3]
8 libcocos2dlua.so!cocos2d::CCNode::addChild(cocos2d::CCNode*) [CCNode.cpp : 628 + 0x15]
9 libcocos2dlua.so!cocos2d::ui::Widget::addChild(cocos2d::CCNode*) [UIWidget.cpp : 134 + 0x3]
10 libcocos2dlua.so!tolua_CocoStudio_Widget_addChild00 [LuaCocoStudio.cpp : 6866 + 0xb]
11 libcocos2dlua.so!tolua_CocoStudio_Widget_addChild01 [LuaCocoStudio.cpp : 6904 + 0x5]
12 libcocos2dlua.so!tolua_CocoStudio_Widget_addChild02 [LuaCocoStudio.cpp : 6936 + 0x5]
0 0x60b15018
1 libcocos2dlua.so!cocos2d::CCLuaStack::executeFunction(int) [CCLuaStack.cpp : 446 + 0x7]
2 libcocos2dlua.so!cocos2d::CCLuaStack::executeFunctionByHandler(int, int) [CCLuaStack.cpp : 492 + 0x9]
3 libcocos2dlua.so!cocos2d::CCLuaEngine::executeSchedule(int, float, cocos2d::CCNode*) [CCLuaEngine.cpp : 175 + 0xb]
4 libcocos2dlua.so!cocos2d::CCTimer::update(float) [CCScheduler.cpp : 203 + 0xb]
5 libcocos2dlua.so!cocos2d::CCScheduler::update(float) [CCScheduler.cpp : 873 + 0x7]
6 libcocos2dlua.so!cocos2d::CCDirector::drawScene() [CCDirector.cpp : 257 + 0x9]
7 libcocos2dlua.so!cocos2d::CCDisplayLinkDirector::mainLoop() [CCDirector.cpp : 1134 + 0x3]
8 libcocos2dlua.so!Java_org_cocos2dx_lib_Cocos2dxRenderer_nativeRender [Java_org_cocos2dx_lib_Cocos2dxRenderer.cpp : 14 + 0x3]
balabalabala还有好多好多呢。。。。。。
boss说是给我两个月,希望能想办法把崩溃率降到1%
臣妾真的做不到啊
哎,我也知道这个问题好棘手的,上论坛来也是碰碰运气,没有结果也没关系,感谢前辈一如既往的热心[em56]
【 在 apocalypse 的大作中提到: 】
: 栈里有 addchild 我还看到了cocostudio
: ╮(╯_╰)╭ 嗯 我猜崩溃的地方是 cocostudio 画的界面 猜的 无责任猜测
: 我当年用的时候 studio 还极其不健全 不稳定。。问题一大堆。。。现在studio不了解了。。
: ...................
对哦,前辈主攻是IOS方向的。0A0
没关系,还有两个月,再稍微努力一下吧,要是不小心找到突破口了捏
啊对了,crush栈可以跟我稍微解释一下嘛?
为什么是那个样子排列的?CCLuaStack.cpp : 446 + 0x7 这样子是什么意思呐?
【 在 apocalypse 的大作中提到: 】
: 矮油 是 android上的crash 栈啊。。。
: 那我就知道的不多咧。。。。。
【 在 ytinrete 的大作中提到: 】
: 对哦,前辈主攻是IOS方向的。0A0
:
: 没关系,还有两个月,再稍微努力一下吧,要是不小心找到突破口了捏
: ...................
后面那个数字
就是指 前边那个文件的第几行。。。
用这个可以直接定位具体语句代码
不过 用lua的话 。。这个信息很容易看不出内容。。。。至少你现在这么些个crash 栈顶都是系统底层。。。定位在哪行也基本属于看不懂的样纸。。。。
告诉你 ccluaengine 里面第400行 那个崩溃。。你也不可能改里面代码不是。。因为还是外面用错了。。